我的代码出了什么问题?我试图传递两个参数(一个用于随机种子,另一个用于和我得到数组我们的边界异常错误..我不明白我做错了什么..我感谢任何帮助
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;
}
}
答案 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函数中设置矩阵字段