Java ArrayIndexOutOfBoundsException-我不明白为什么会出现此错误

Java ArrayIndexOutOfBoundsException-我不明白为什么会出现此错误,java,arrays,2d,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 stat

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

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;
    }
}
import java.util.Random;
公共类稀疏{
公共静态整数大小;
公共静态整数矩阵[][]=新整数[size][size];
公共种子;
公共静态void main(字符串参数[]){
seed=Integer.parseInt(args[0]);
size=Integer.parseInt(args[1]);
矩阵=矩阵根();
}
公共静态int[][]矩阵根(){
随机r=新随机(种子);
对于(int i=0;i
在为矩阵分配空间之前,必须初始化矩阵的大小:

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

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

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

由于在
大小仍然为零时分配
矩阵
,因此会出现错误:

public static int matrix[][] = new int[size][size]; // size is zero here
在从
args
读取
size
之后,需要从声明中删除初始化,并将其移动到
main()

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

由于在
大小仍然为零时分配
矩阵
,因此会出现错误:

public static int matrix[][] = new int[size][size]; // size is zero here
在从
args
读取
size
之后,需要从声明中删除初始化,并将其移动到
main()

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

初始化矩阵字段时,静态字段seed和size具有默认值(0)

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


要修复此问题,应在参数解析后在主函数中设置矩阵字段。

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

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


要解决此问题,应在参数解析后在主函数中设置矩阵字段。

粘贴异常的完整堆栈跟踪,并告诉我们它指向哪一行。请不要编辑问题以删除所有内容。粘贴异常的完整堆栈跟踪,并告诉我们它指向哪一行。请不要编辑问题是基本上删除所有内容。他在constructor@Bohemian他有,但在那之后他没有重新计算矩阵维数。矩阵初始化的代码是静态的,在该类的任何构造函数和/或函数之前执行。@Bohemian什么构造函数?我没有看到构造函数。@Bohemian我在他说有一个主方法和一个函数来初始化矩阵,但我看不到正式的构造函数constructor@Bohemian他会,但在那之后他不会重新计算矩阵维数。矩阵初始化的代码是静态的,在该类的任何构造函数和/或函数之前执行。@Bohemian什么缺点tructor?我没有看到构造函数。@Bohemian我是说有一个主方法和一个函数来初始化矩阵,但我看不到正式的构造函数。