ArrayIndexOutOfBoundsException - 我不明白为什么我收到此错误

时间:2013-03-09 22:11:00

标签: java arrays 2d

我的代码出了什么问题?我试图传递两个参数(一个用于随机种子,另一个用于和我得到数组我们的边界异常错误..我不明白我做错了什么..我感谢任何帮助

import java.util.Random;

public class sparse {

    public static int size;
    public static int matrix[][] = new int[size][size];
    public static int seed;

    public static void main(String args[]) {

        seed = Integer.parseInt(args[0]);
        size = Integer.parseInt(args[1]);

        matrix = matrixGen();
    }

    public static int[][] matrixGen() {
        Random r = new Random(seed);
        for (int i = 0; i < matrix.length; i++) {
            for (int j = 0; j < matrix[i].length; j++) {
                matrix[i][j] = r.nextInt(100);
            }
        }

        for (int i = 0; i < size; i++) {
            for (int j = 0; j < size; j++) {
                System.out.print(" " + matrix[i][j]);
            }
            System.out.println("  ");
        }

        return matrix;
    }
}

3 个答案:

答案 0 :(得分:4)

您收到错误是因为您在matrix仍然为零时分配size

public static int matrix[][] = new int[size][size]; // size is zero here

您需要从声明中删除初始化,并在从main()阅读size后将其移至args

public static void main(String args[]) {
    seed = Integer.parseInt(args[0]);
    size = Integer.parseInt(args[1]);
    matrix = new int[size][size];
    matrix = matrixGen();
}

答案 1 :(得分:2)

在为矩阵分配空间之前,必须初始化矩阵的大小:

 public static int size = 30; // or whatever value do you want

答案 2 :(得分:0)

初始化矩阵字段时,静态字段种子和大小具有默认值(<0)。

因此矩阵是一个0x0数组,没有任何元素的空间:任何访问都会给出这样的异常。

要修复,你应该在参数'parse。

之后在main函数中设置矩阵字段