-3
int[] tall = new int[28123];

for (int j = 1;j <= 28123; j++){
    int x = 0;
    tall[x] = j;
    x++;
}

このコードの何が問題になっていますか? このコードは次のことを行うべきではありません:

  1. サイズが 28123 の tall という名前の配列を作成します。
  2. インデックス 0 = 1、インデックス 1 = 2 などにします。
4

7 に答える 7

4

xいいえ、ループごとに再初期化しています。への変更:

int[] tall = new int[28123];
int x = 0;

for (int j = 1;j<=28123;j++){
    tall[x] = j;
    x++;
}

または、さらに良い (xは常に と等しいためj-1):

int[] tall = new int[28123];

for (int j = 1;j<=28123;j++){
    tall[j-1] = j;
}
于 2013-03-17T21:05:06.113 に答える
1

プログラムのデバッグが目的であるため、デバッガーでコードをステップ実行することをお勧めします。

コードがループするたびにint x = 0;設定されることがわかると思います。

于 2013-03-17T21:06:09.900 に答える
1

間違いは 1 つではなく、たくさんあります。そのはず:

int[] tall = new int[28123];

for (int j=0;j<28123;j++){
    tall[j] = j+1;
}

あなたのコードは、配列のすべての位置に 0 を入れています。

さらに、配列の最後のインデックスが 28123-1 であるため、例外がスローされます (Java の配列は 0 から始まります!)。

于 2013-03-17T21:08:29.790 に答える
0

配列の値を変更する前に、常にに設定xします。0

以下を使用できます。

int[] tall = new int[28123];

for (int j = 0;j<28123;j++){
    // Or whatever value you want to set.
    tall[j] = j + 1;
}

int x=0または、 for ループの前にx ( ) の初期化を削除するだけです。

于 2013-03-17T21:05:11.917 に答える
-1

問題である for ループの外に x=0 を置く

于 2013-03-17T21:05:50.243 に答える
-1
public class Array {
    static int a[] = new int[101];
    int counter = 0;
    public int add(int num) {
        if (num <= 100) {
            Array.a[this.counter] = num;
            System.out.println(a[this.counter]);
            this.counter++;

            return add(num + 1);
        }
        return 0;
    }

    public static void main(String[] args) {
        Array c = new Array();
        c.add(1);
    }
}
于 2016-12-28T10:01:36.633 に答える