Java二维数组遍历与格式化输出解析
在计算机等级考试二级Java的数组操作部分,二维数组的创建和遍历是基础但重要的考点。本文将通过一道二维数组格式化输出的题目,详细解析数组定义、嵌套循环遍历以及输出格式控制,帮助考生掌握这类题型的解答方法。
一、题目分析
题目要求
程序功能:
- 创建一个4行5列的二维整型数组
- 将数组以对齐的格式输出
- 补全指定位置的代码,不能修改已有代码
运行结果
1 1 1 1 1
2 2 2 2 2
3 3 3 3 3
4 4 4 4 4
题目源代码:
public class Java_2
{
public static void main(String[] args) {
int[][] aMatrix = {{1,1,1,1,1},{2,2,2,2,2},{3,3,3,3,3},{4,4,4,4,4}};
int i = 0; //循环变量
int j = 0; //循环变量
//print matrix
for (i = 0; i < aMatrix.length; i++) {
//*********Found********
for ( j = 0; __________________ ; j++) {
//*********Found********
System.out.print(__________________ + " ");
}
System.out.println();
}
}
}
二、解题思路与填空详解
第一个填空位置
for ( j = 0; __________________ ; j++) {
需要填入:内层循环的终止条件
正确答案:j < aMatrix[i].length
解释:
- 外层循环遍历行(i),内层循环遍历列(j)
- 每行的列数可以通过
aMatrix[i].length
获取 - 这是遍历二维数组的标准模式
第二个填空位置
System.out.print(__________________ + " ");
需要填入:当前数组元素的值
正确答案:aMatrix[i][j]
解释:
- 需要输出当前行i、列j的元素值
- 二维数组通过
aMatrix[i][j]
访问元素 - 注意后面添加空格保持对齐
三、完整正确代码
public class Java_2 {
public static void main(String[] args) {
int[][] aMatrix = {{1,1,1,1,1},{2,2,2,2,2},{3,3,3,3,3},{4,4,4,4,4}};
int i = 0; //循环变量
int j = 0; //循环变量
//print matrix
for (i = 0; i < aMatrix.length; i++) {
for (j = 0; j < aMatrix[i].length; j++) {
System.out.print(aMatrix[i][j] + " ");
}
System.out.println();
}
}
}
四、关键知识点解析
1. 二维数组定义与初始化
Java中二维数组的三种定义方式:
// 方式1:直接初始化
int[][] arr1 = {{1,2},{3,4}};
// 方式2:先声明再赋值
int[][] arr2 = new int[2][2];
arr2[0][0] = 1;
// 方式3:不规则数组
int[][] arr3 = new int[2][];
arr3[0] = new int[3];
2. 嵌套循环遍历
二维数组遍历的标准模式:
for(int i=0; i<arr.length; i++) { // 遍历行
for(int j=0; j<arr[i].length; j++) { // 遍历列
// 处理arr[i][j]
}
}
3. 格式化输出技巧
System.out.print()
:不换行输出System.out.println()
:换行输出- 添加空格保持对齐
使用
printf
格式化:System.out.printf("%2d ", arr[i][j]); // 固定2位宽度
五、常见错误分析
数组索引越界:
- 循环条件错误导致访问不存在的元素
- 例如
j <= aMatrix[i].length
(应使用<)
行列混淆:
- 混淆i和j的含义
- 错误写成
aMatrix[j][i]
输出格式问题:
- 忘记添加空格导致数字连在一起
- 错误地在每行开头或结尾多输出空格
循环变量重用:
- 在嵌套循环外使用循环变量i,j
- 可能导致变量值不符合预期
六、扩展思考
1. 不规则二维数组处理
int[][] irregular = {{1},{2,3},{4,5,6}};
for(int[] row : irregular) {
for(int num : row) {
System.out.print(num + " ");
}
System.out.println();
}
2. 增强for循环遍历
for(int[] row : aMatrix) {
for(int num : row) {
System.out.print(num + " ");
}
System.out.println();
}
3. 矩阵转置输出
// 假设是方阵
for(int j=0; j<aMatrix[0].length; j++) {
for(int i=0; i<aMatrix.length; i++) {
System.out.print(aMatrix[i][j] + " ");
}
System.out.println();
}
七、考试技巧
数组维度记忆:
array.length
表示行数array[i].length
表示第i行的列数
循环边界检查:
- 从0开始计数
- 使用<而不是<=
- 注意数组索引从0开始
输出格式控制:
- 行末换行使用println
- 元素间添加空格
- 保持对齐美观
代码补全技巧:
- 观察变量命名规律(i行,j列)
- 注意数组访问语法
- 保持代码缩进清晰
八、模拟练习
题目:补全矩阵对角线元素求和的程序
public class MatrixDiagonal {
public static void main(String[] args) {
int[][] matrix = {{1,2,3},{4,5,6},{7,8,9}};
int sum = 0;
for(int i=0; i<matrix.length; i++) {
for(int j=0; j<matrix[i].length; j++) {
//*********Found********
if(__________________) { // 判断对角线元素
sum += matrix[i][j];
}
}
}
System.out.println("对角线元素和: " + sum);
}
}
答案:
i == j || i + j == matrix.length - 1
(主对角线和副对角线)
或i == j
(仅主对角线)
九、总结
通过这道二维数组输出题,我们掌握了:
- 二维数组的定义和初始化方法
- 嵌套循环遍历二维数组的标准模式
- 控制输出格式保持对齐的技巧
- Java中数组的基本操作和注意事项
关键点记忆:
- 二维数组是"数组的数组"
- 外层循环控制行,内层循环控制列
array.length
获取行数,array[i].length
获取列数- 输出注意添加空格和换行
掌握这些知识不仅有助于通过Java二级考试,也为后续学习更复杂的数据结构和算法打下基础。希望这篇解析能帮助你在考试中顺利解决数组相关题目!