Java二维数组索引打印异常:始终返回0且不递增求助
问题解决:二维数组输入时索引不递增显示的问题
你代码里的核心问题是打印的是数组元素而不是循环的行/列索引:
- Java中刚创建的int二维数组,所有元素默认值都是0,所以你每次输出
num[row][column]时,只会显示0,跟循环的row、column变量没关系。 - 另外没必要在循环里反复创建Scanner对象,放在循环外一次就行。
修正后的代码
import java.util.Scanner; public class Main { public static void main(String[] args) { int[][] num = new int[2][2]; int numbering = 0; // 把Scanner放在循环外,只创建一次 Scanner sc = new Scanner(System.in); for (int row = 0; row < num.length; row++) { for (int column = 0; column < num[row].length; column++) { // 这里打印循环变量row和column,而不是数组元素 System.out.println("Enter Row " + row + " & Column " + column + " value"); num[row][column] = sc.nextInt(); } } // 遍历输出验证 for (int i = 0; i < num.length; i++) { for (int j = 0; j < num[i].length; j++) { System.out.println("The Values at " + ++numbering + " position (Row " + i + ", Column " + j + ") is: " + num[i][j]); } } // 关闭Scanner释放资源 sc.close(); } }
修正点说明
- 打印语句改为直接输出循环变量
row和column,这样就能随着循环递增显示正确的索引。 - 将
Scanner sc的创建移到循环外部,避免重复创建对象,最后调用sc.close()释放资源。 - 内层循环判断条件改成
num[row].length,适配不规则二维数组的遍历场景,比固定用num.length更通用。
正确输出示例
运行后会依次提示:
Enter Row 0 & Column 0 value Enter Row 0 & Column 1 value Enter Row 1 & Column 0 value Enter Row 1 & Column 1 value
输入完成后,会输出类似:
The Values at 1 position (Row 0, Column 0) is: 10 The Values at 2 position (Row 0, Column 1) is: 20 The Values at 3 position (Row 1, Column 0) is: 30 The Values at 4 position (Row 1, Column 1) is: 40
内容的提问来源于stack exchange,提问作者touqeer
相关产品推荐
相关产品推荐

