int[] tall = new int[28123];
for (int j = 1;j <= 28123; j++){
int x = 0;
tall[x] = j;
x++;
}
このコードの何が問題になっていますか? このコードは次のことを行うべきではありません:
- サイズが 28123 の tall という名前の配列を作成します。
- インデックス 0 = 1、インデックス 1 = 2 などにします。
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;
}
プログラムのデバッグが目的であるため、デバッガーでコードをステップ実行することをお勧めします。
コードがループするたびにint x = 0;
設定されることがわかると思います。
間違いは 1 つではなく、たくさんあります。そのはず:
int[] tall = new int[28123];
for (int j=0;j<28123;j++){
tall[j] = j+1;
}
あなたのコードは、配列のすべての位置に 0 を入れています。
さらに、配列の最後のインデックスが 28123-1 であるため、例外がスローされます (Java の配列は 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 ( ) の初期化を削除するだけです。
問題である for ループの外に x=0 を置く
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);
}
}