import java.util.Scanner;
public class TestMultiDimenArray
{
private static int row;
private static int column;
public static int [][] table1 = new int [row][column];
public static int [][] get ( int a, int b){
row = a;
column = b;
Scanner keyboard = new Scanner(System.in);
for (int n = 0; n < a; n++){
for (int m = 0; m < b; m++){
table1[n][m] = keyboard.nextInt();
}
}
return table1;
}
public static void display (int [][] array1){
for (int n = 0; n < row; n++){
for (int m = 0; m < column; m++){
System.out.print(table1[n][m] + " ");
}
System.out.println();
}
}
public static void main(String[] args){
get(3,3);
}
}
程序编译成功但是当我运行它时,它会返回错误。我该如何解决?这就是我能解释的问题。系统有什么问题,告诉我在我能告诉你的时候提供更多细节。
答案 0 :(得分:3)
此语句声明一个长度为0且宽度为0的2D数组。
public static int [][] table1 = new int [row][column];
这是因为在初始化类时没有为row
和column
分配任何内容;只有在调用get
时才会分配它们。因此,Java会为它们分配默认值0
。
从参数中指定row
和column
值后初始化数组。
public static int [][] table1;
public static int [][] get ( int a, int b){
row = a;
column = b;
table1 = new int [row][column];
Scanner keyboard = new Scanner(System.in);
// Rest unchanged
}
答案 1 :(得分:0)
您无法动态设置table1数组的大小。 确保a和b低于或等于原始和列。
(如果您重新创建了table1,我认为您无法获取任何数据)