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

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

这段代码有什么问题?此代码不应该执行以下操作:

  1. 创建一个名为 tall 的数组,大小为 28123。
  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

你没有一个错误,而是很多错误。它应该是:

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

将 x=0 放在 for 循环之外就是问题所在

于 2013-03-17T21:05:50.243 回答
-1
  • 第一行:创建的数组。
  • 第三行循环从 j = 1 开始到 j = 28123
  • 第四行在每次访问循环时给变量 x 值 (0)。
  • 第五行你把 j 的值放在索引 0 中。
  • 第六行你确实将值 x 增加 1。(但它将在第 4 行重置为 0)
于 2016-12-08T13:47:15.897 回答
-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 回答