我想用for循环将1到16之间的数字添加到ArrayList中,但我有一个条件,如果i>10则写2次i

问题描述 投票:0回答:1

**首先我输入了这段代码**

List<Integer> list = new ArrayList<>();
        for (int i = 1; i < 16 ; i++) {

            if (i>10){
                i*=2;
            }
            list.add(i);


            }
        System.out.println(list);

这段代码给了我 // [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 22]

然后我要求ChatGPT 他给了我这个

List<Integer> list = new ArrayList<>();
        for (int i = 1; i <= 15 ; i++) {
            if (i < 11) {
                list.add(i);
            } else {
                list.add(i * 2);
            }
        }
        System.out.println(list);

        }

还有这个

List<Integer> list = new ArrayList<>();
        for (int i = 1; i < 16; i++) {
            int value = i;
            if (i > 10) {
                value *= 2;

            }
            list.add(value);


        }
        System.out.println(list);

这些代码工作正常 但我也问 ChatGPT 我的代码有什么问题,他无法解释。 你能给我解释一下吗?

**我需要得到这个结果**

[1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 22, 24, 26, 28, 30]

java for-loop if-statement arraylist
1个回答
0
投票

代码中的问题是

i
用作循环索引,而不仅仅是用作要放入列表中的值。

假设 i = 10,此时将其加倍,即为 20。您告诉

for
i <= 15
一样长地循环,但现在不再循环了。因此你的循环退出了。

另外两个片段没有这个问题,因为它们都没有修改

i
。一种将计算值 (
i*2
) 直接放入列表中,另一种使用临时变量 (
value
) 来保存它。

© www.soinside.com 2019 - 2024. All rights reserved.