我使用 Scanner 类来获取输入,这是代码。
int [] [] arr = new int[3][];
for (int row = 0; row < arr.length; row++)
{
for (int col = 0; col < arr[row].length; col++) {
arr[row][col] = sc.nextInt();
}
}
for (int row = 0; row < arr.length; row++) {
System.out.println(Arrays.toString(arr[row]));
}
1 2 3 4 5 6 7 8 95 52 45 - 提供输入 I 这是我得到的输出
Exception in thread "main" java.lang.NullPointerException: Cannot read the array length because "arr[row]" is null at
com.Arrays.TwoDArray.main(TwoDArray.java:26)
您收到此错误是因为您没有定义数组的第二个维度并且您使用了 arr[row].length
这里有两种方法可以纠正这个问题:
1.
int [] [] arr = new int[3][3];
for (int row = 0; row < arr.length; row++)
{
for (int col = 0; col < arr[row].length; col++) {
arr[row][col] = sc.nextInt();
}
}
for (int row = 0; row < arr.length; row++) {
System.out.println(Arrays.toString(arr[row]));
}
这是使用流的一种方法。它假定您在同一行上键入每一行输入。
Scanner sc = new Scanner(System.in);
int [] [] arr = new int[3][];
for (int row = 0; row < arr.length; row++)
{
String line = sc.nextLine();
arr[row] = Arrays.stream(line.split("\\s+")).filter(s->!s.isBlank()).mapToInt(Integer::parseInt).toArray();
}
for (int row = 0; row < arr.length; row++) {
System.out.println(Arrays.toString(arr[row]));
}
打印