Java - 将for循环的输出存储到数组中

时间:2018-01-25 17:47:47

标签: java

我正在使用for循环来创建13的前400个倍数,我正在尝试将这些数字存储到数组中。具体问题在第5行。我知道这段代码正在使程序写入数组的第一个元素,这导致了问题。有什么方法可以按顺序存储数字吗?

checked

3 个答案:

答案 0 :(得分:5)

数组索引从0开始,因此将int dex = 1更改为int dex = 0。此外,您应该使用计数变量dex写入正确的数组索引:

public static void main(String[] args) {
    int[] thirteenMultiples = new int[400];
    for (int dex = 0; dex < thirteenMultiples.length; dex ++) {
        int multiples = 13 * dex; 
        thirteenMultiples[dex] = multiples;
        System.out.println(Arrays.toString(thirteenMultiples));
    }
}

顺便说一下:Arrays.toString(thirteenMultiples)在每次迭代时都是一项非常昂贵的操作(尝试自己编写这个方法,你就会明白我的意思)。也许你应该只打印thirteenMultiples[dex]的当前值并在循环结束后打印出数组。我认为你现在只是测试和尝试的东西,但我认为从一开始就记住这些事情是好的;)

答案 1 :(得分:4)

13thMultiples [dex]代替13个多个[0],因为每次循环运行时dex等于索引。对于ex - 对于dex = 1,您在[1]处存储多个,然后它增加到2然后它变为[2]并且您将下一个倍数存储在2.因此它将每个新值存储在新索引处。

当数组从0索引开始时,也从0开始执行dex。

答案 2 :(得分:0)

我想在这种情况下,最好使用List而不是数组。您的代码看起来更干净

public static void main(String[] args) {
    List<Integer> thirteenMultiples = new ArrayList<Integer>;
    for (int dex = 0; dex < 400; dex ++) {
        thirteenMultiples.add(13 * dex)
    }
    System.out.println(thirteenMultiples);

}