一、声明、分配空间、赋值分开写
1、声明二维数组
//声明一个int型二维数组
int[][] nums;
//声明一个String型二维数组
String[][] strs;
2、分配空间
//给nums数组分配空间,这个数组可以存3个元素,里面元素长度相同都是5个元素
nums = new int[3][5];
//给strs数组分配空间,这个数组可以存5个元素,里面元素长度都不相同
strs = new String[5][];
3、赋值
nums[0][0] = 9;
nums[2][5] = 99;//数组越界ArrayIndexOutOfBoundsException
System.out.println(nums[2][5]);
二、二维数组声明和分配空间合并写
1.声明并分配空间
int[][] nums = new int[5][3];
int[][] nums2 = new int[3][];
String[][] strs = new String[6][5];
String[][] strs2 = new String[8][];
2.赋值如上,偷个懒
三、二维数组的声明、分配空间、赋值合并写
1.标准写
char[][] chars = new char[][]{{'a','b','c'},{'d','e'},{'f'}};
2、简写
double[][] nums3 = {{2.5,3,3},{11.5,23.2},{99.9,88,8}};
四、小练习
1.遍历二维数组
public static void main(String[] args) {
//遍历二维数组
char[][] chars = new char[][]{{'a','b','c'},{'d','e'},{'f'}};
for (int i = 0; i < chars.length; i++) {
for (int j = 0; j < chars[i].length; j++) {
System.out.print(chars[i][j]+" ");
}
System.out.println();
}
}
2.已知有3个班级各五名学员,请使用二维数组计算各个班级的总成绩
public static void main(String[] args) {
// 已知有3个班级各五名学员,请使用二维数组计算各个班级的总成绩
// 声明一个长度为3的二维数组,此数组里面的元素都是长度为5的一维数组
double[][] scores = new double[3][5];
// 创建Scanner类对象
Scanner sc = new Scanner(System.in);
// 通过循环向数组中存入数据
for (int i = 0; i < scores.length; i++) {
System.out.println("--------------------第" + (i + 1)
+ "个班--------------------");
for (int j = 0; j < scores[i].length; j++) {
System.out.println("请输入第" + (j + 1) + "个学生的成绩:");
scores[i][j] = sc.nextDouble();
}
}
// 遍历
for (int i = 0; i < scores.length; i++) {
System.out.println("第" + (i + 1) + "个班级的学生成绩:");
for (int j = 0; j < scores[i].length; j++) {
System.out.println("第" + (j+1) + "个学生成绩" + scores[i][j]);
}
System.out.println();
}
// 统计成绩
System.out.println("--------------------成绩统计--------------------");
for (int i = 0; i < scores.length; i++) {
int sum = 0;// 这个sum要声明在外层for循环内,外层for循环每循环一次,就声明以sum变量用来统计班级总成绩
for (int j = 0; j < scores[i].length; j++) {
sum += scores[i][j];
}
System.out.println((i + 1) + "班总成绩:" + sum);
}
}