java学习笔记之二维数组 2019/4/21号

java学习笔记之二维数组 2019/4/21号

定义格式

第一种定义方法(动态初始化)

数据类型 数组名 [ ][ ] = new 数据类型[m][n]
数据类型 [ ][ ] 数组名 = new 数据类型[m][n]
数据类型 [ ] 数组名 [ ] = new 数据类型[m][n]

int[][] arr = new int[3][5];
定义了一个整型的二维数组,其中包含3个一维数组,每个一维数组可以存储5个整数

int[][] arr = new int[3][];
表示一个包含了三个整型的一维数组的二维数组

第二种定义方法(静态初始化)

数据类型[][] 数组名 = {{元素},{元素1, 元素2},……};

int[][] arr = {{2,5},{1},{3,2,4},{1,7,5,9}};

例题

例题1

某公司按照季度和月份统计的数据如下:单位(万元)
第一季度:22,66,44
第二季度:77,33,88
第三季度:25,45,65
第四季度:11,66,99

public class Test01 {
	public static void main(String[] args) {
		int arr[][]= {
				{22,66,44,56},
				{77,33,88},
				{25,45,65},
				{11,66,99}
		};
		int sum[]=new int[arr.length];//求每一个季度的
		int con=0;
		for (int i=0;i<arr.length;i++)
		{
			for(int j=0;j<arr[i].length;j++)
			{
			con=arr[i][j]+con;
			}
			sum[i]=con;
			con=0;//每次置它为0,以便下一次使用
		}
		for (int i=0;i<arr.length;i++)
		{
			System.out.printf("第%d季度的总和为:%d",i+1,sum[i]);
			System.out.println();
		}
		for(int i=0;i<arr.length;i++)
			con=con+sum[i];
		System.out.println("所有总和为:"+con);
	}
}

结果:
在这里插入图片描述

例题2

实现矩阵的加法和打印,通过方法调用

public class Test02 {

	public static void PrintArr(int a[][])
	{
		for(int i=0;i<a.length;i++)
		{
			for(int j=0;j<a[i].length;j++)
				System.out.print(a[i][j]+"\t");
			System.out.println();
		}
	}
	
	public static int[][] add(int a[][],int b[][])
	{
		int [][]c=new int[a.length][a.length];
		for(int i=0;i<a.length;i++)
		{
			for(int j=0;j<a[i].length;j++)
				c[i][j]=a[i][j]+b[i][j];
		}
		return c;
	}
	public static void main(String[] args) {
		// TODO 自动生成的方法存根
		int [][]a= {
				{1,2,4},
				{2,4,5},
				{5,2,5}
		};
		PrintArr(a);
		PrintArr(add(a,a));
	}
}

结果:
在这里插入图片描述

例题3

在这里插入图片描述

import java.util.Arrays;
import java.util.Scanner;

public class Test03 {

	public static void main(String[] args) {
		Scanner in=new Scanner(System.in);
		int T=in.nextInt();
		String s[]=new String[T];//定义一维数组s接收用户的输入
		char[][] s2=new char[T][];//定义二维数组s2,用于接收s中的字符串转换成字符数组之后元素
		for (int i=0;i<T;i++)
		{
			s[i]=in.next();
		}
		for (int i=0;i<T;i++)
		{
			s2[i]=s[i].toCharArray();//将s数组的字符串装换成字符数组,存到s2中
		}
		for (int i=0;i<T;i++)
		{
			for(int j=0;j<s[i].length();j=j+2)//输出
				System.out.print(s2[i][j]);
			System.out.println();
		}
		}
}

结果:
在这里插入图片描述

例题4

游戏规则:循环报数游戏,有n个人,每一个人编号从1开始,依次编号到n。从1到3报数,报3的退出游戏,得出最后获胜人的编号。

import java.util.Scanner;
public class Test01 {
public static void main(String[] args) {
	//游戏规则:循环报数游戏,有n个人,每一个人编号从1开始,依次编号到n。从1到3报数,报3的退出游戏,得出最后获胜人的编号。
	Scanner in=new Scanner(System.in);
	int T=in.nextInt();
	int []arr=new int[T];
	for(int i=0;i<T;i++)
	{
		arr[i]= 1;
	}
	int count=1;
	int i=0;
	while(i<T)
	{
		if(arr[i]==1)
		{
			if(count%3==0)
			{
				arr[i]=-1;
				System.out.println("出队顺序是:"+(i+1));
			}
			count++;
		}
		i++;
		if(i>=T)
			i=0;
	}
}
}

数组常用方法

常用的10个方法

内容概要:本文系统介绍了算术优化算法(AOA)的基本原理、核心思想及Python实现方法,并通过图像分割的实际案例展示了其应用价值。AOA是一种基于种群的元启发式算法,其核心思想来源于四则运算,利用乘除运算进行全局勘探,加减运算进行局部开发,通过数学优化器加速函数(MOA)数学优化概率(MOP)动态控制搜索过程,在全局探索与局部开发之间实现平衡。文章详细解析了算法的初始化、勘探与开发阶段的更新策略,并提供了完整的Python代码实现,结合Rastrigin函数进行测试验证。进一步地,以Flask框架搭建前后端分离系统,将AOA应用于图像分割任务,展示了其在实际工程中的可行性与高效性。最后,通过收敛速度、寻优精度等指标评估算法性能,并提出自适应参数调整、模型优化并行计算等改进策略。; 适合人群:具备一定Python编程基础优化算法基础知识的高校学生、科研人员及工程技术人员,尤其适合从事人工智能、图像处理、智能优化等领域的从业者;; 使用场景及目标:①理解元启发式算法的设计思想与实现机制;②掌握AOA在函数优化、图像分割等实际问题中的建模与求解方法;③学习如何将优化算法集成到Web系统中实现工程化应用;④为算法性能评估与改进提供实践参考; 阅读建议:建议读者结合代码逐行调试,深入理解算法流程中MOA与MOP的作用机制,尝试在不同测试函数上运行算法以观察性能差异,并可进一步扩展图像分割模块,引入更复杂的预处理或后处理技术以提升分割效果。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值