1

コードの何が問題になっていますか? 私は2つの引数を渡そうとしています(1つはランダムシード用、もう1つは 用で、配列の境界例外エラーを取得します..何が間違っているのかわかりません..助けていただければ幸いです

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;
    }
}
4

3 に答える 3

4

がまだゼロmatrixのときにを割り当てるため、エラーが発生します。size

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

からmain()を読み取った後、宣言から初期化を削除し、 に移動する必要があります。sizeargs

public static void main(String args[]) {
    seed = Integer.parseInt(args[0]);
    size = Integer.parseInt(args[1]);
    matrix = new int[size][size];
    matrix = matrixGen();
}
于 2013-03-09T22:14:44.260 に答える
2

スペースを割り当てる前に、マトリックスのサイズを初期化する必要があります。

 public static int size = 30; // or whatever value do you want
于 2013-03-09T22:13:24.237 に答える
0

行列フィールドを初期化すると、静的フィールドのシードとサイズには既定値 (0) が設定されます。

したがって、行列は 0x0 配列であり、要素のためのスペースがありません。アクセスすると、そのような例外が発生します。

修正するには、引数の解析後にメイン関数で行列フィールドを設定する必要があります。

于 2013-03-09T22:19:40.200 に答える