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;
}
}
}