这里有什么问题?当我在Netbeans中运行代码时说“java.lang.ArrayIndexOutOfBoundsException:0”
时出现运行时错误我发现它意味着“价值不存在” - 但这就是我想要做的 - 让用户定义数组大小的值。求助。
public static void main(String[] args) {
int row = 0;
int colum = 0;
//Declare 2d array
int [][] matrix = new int [row][colum];
//Create input for array size
Scanner input = new Scanner(System.in);
System.out.println("Enter " + matrix[row].length + " rows and " + matrix[colum].length + " colums: ");
for (row = 0; row < matrix.length; row++) {
for (colum = 0; colum < matrix[row].length ; colum++) {
matrix[row][colum] = input.nextInt();
//Input variables to array
//Print the array
for (row = 0; row < matrix.length; row++ ) {
for (colum = 0; colum < matrix[row].length; colum++ ) {
System.out.println(matrix[row][colum] + "");
}
System.out.println();
}
}
}
}
}
答案 0 :(得分:2)
答案 1 :(得分:2)
两个问题。您需要使用非零值初始化行和列:
int row = 3;
int colum = 4;
您没有正确引用矩阵的尺寸:
System.out.println("Enter " + matrix.length + " rows and "
+ matrix[0].length + " colums: ");
还有一些更糟糕的参考文献。您当然可以使用row
和column
变量,而不是从matrix
获取长度。
答案 2 :(得分:1)
你的数组有0个元素 - 你试图访问第一个(索引为0) - 这是超出界限的。
答案 3 :(得分:1)
您正在创建两个维度都为0的数组数组:
int row = 0;
int colum = 0;
//Declare 2d array
int [][] matrix = new int [row][colum];
如果您尝试将其编入索引,则会获得ArrayIndexOutOfBoundsException
。
将row
和colum
设置为&gt; 0
Java中的数组具有固定的大小。创建阵列后,无法更改其大小。如果需要在运行时更改大小,请使用集合类(例如ArrayList
)而不是数组。
答案 4 :(得分:0)
int row = 0;
int colum = 0;
int [][] matrix = new int [row][colum];
声明的数组具有零行和零列。你不能在里面存放任何东西。
此处发生异常:
matrix[row].length
with row=0
因为它是第一行的列数(数组基于零!),它不存在。
答案 5 :(得分:0)
您的问题是您将row
和column
设置为0,然后在两个方向上创建一个大小为0的二维数组,然后执行以下操作:
matrix[row].length
失败,因为索引0处没有条目 - 它将要求数组至少具有大小为1。