为什么我得到“java.lang.ArrayIndexOutOfBoundsException:0”

时间:2011-04-15 11:22:32

标签: java arrays

这里有什么问题?当我在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();
    }



        }
    }








    }


}

6 个答案:

答案 0 :(得分:2)

对于你的情况

int [][] matrix = new int [0][0];

没有元素的均值,索引从0开始,你指定的大小从1

开始

如果需要动态数组

,请转到ArrayList

答案 1 :(得分:2)

两个问题。您需要使用非零值初始化行和列:

int row = 3;
int colum = 4;

您没有正确引用矩阵的尺寸:

System.out.println("Enter " + matrix.length + " rows and "
        + matrix[0].length + " colums: ");

还有一些更糟糕的参考文献。您当然可以使用rowcolumn变量,而不是从matrix获取长度。

答案 2 :(得分:1)

你的数组有0个元素 - 你试图访问第一个(索引为0) - 这是超出界限的。

答案 3 :(得分:1)

您正在创建两个维度都为0的数组数组:

int row = 0;
int colum = 0;

//Declare 2d array
int [][] matrix = new int [row][colum];

如果您尝试将其编入索引,则会获得ArrayIndexOutOfBoundsException

rowcolum设置为&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)

您的问题是您将rowcolumn设置为0,然后在两个方向上创建一个大小为0的二维数组,然后执行以下操作:

matrix[row].length

失败,因为索引0处没有条目 - 它将要求数组至少具有大小为1。

相关问题