0

私はJavaが初めてで、サイズがユーザー定義の配列を作成しようとしています。配列全体をゼロで埋め、そこから移動することで見つめています。どうすればいいですか?私が今持っているのは次のようなものです:(入力は私のスキャナーオブジェクトです)

int num1, num2, num3 = 0, num4 = 0, active = 0;

num1 = input.nextInt();
num2 = input.nextInt();

int[][] ver = new int[num1][num2];

while(active == 0){

    ver [num3][num4] = 0;
    ++num4;

    if(num4 > num2){

        ++num3;
        num4 = 0;
    }

    if(num3 > num1){

        ++active

    }

}

これにより、ArrayIndexOutOfBoundsException:0 が引き続き発生し、ver[0][0] が存在しないと思われます。前もって感謝します。

4

3 に答える 3

0

コード内のnum3との値はチェックされません。num4私が想像するように、適切な制限を追加してnum1くださいnum2

num3 または num4 の値が制限を超えると、ArrayIndexOutOfBoundException.

于 2012-12-12T04:50:52.867 に答える
0

あなたは適切にチェックnum3していないのでnum4(どちらも上限に達することが許可されています)、最終的には範囲外になります。

配列をゼロで埋めようとしているだけなので、次のコードを検討してみませんか。

import java.util.Arrays;

// ...

int num1 = 2; // fixed number just for test purposes
int num2 = 2; // fixed number just for test purposes

int[][] ver = new int[num1][num2];
for (int[] row: ver)
    Arrays.fill(row, 0);

System.out.println(ver[0][0]); // prints 0 as expected

すべての部分配列 (row例では) は配列であるため、上記のコードはそれらをループしてゼロで埋め、例に示すようにインポートする必要がfillあるクラスのメソッドを利用します。Arrays

于 2012-12-12T04:53:52.320 に答える
0

num4 == num2これは、チェックしているときに失敗しますnum4 > num2。インデックスが に行く間、num2は配列の長さですlength-1num3num1比較しても同じです。num2-1以下のようにとを比較に使用num1-1します。

    int num1=0, num2=0, num3=0,num4=0;
    num1 = input.nextInt();  //<--Input a value >0
    num2 = input.nextInt();  //<--Input a value >0
    int[][] ver = new int[num1][num2];
    int active = 0;
    while(active == 0){
        ver[num3][num4] = 0;
        ++num4;
        if(num4 > num2-1){     // or if(num4 >= num2)
            ++num3;
            num4 = 0;
        }
        if(num3 > num1-1){     // or if(num3 >= num1)
            ++active;
        }
    }
于 2012-12-12T04:54:24.380 に答える