You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

为何我的Java for循环向ArrayList添加元素结果不符合预期?

问题分析:for循环添加元素到ArrayList的逻辑错误

需求说明

需要通过for循环将1到15的数字添加到ArrayList中,规则为:当数字大于10时,添加该数字的2倍,最终期望得到结果:[1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 22, 24, 26, 28, 30]

错误代码及运行结果

你编写的代码如下:

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]

错误原因

核心问题在于你修改了for循环的控制变量i:

  • 当循环执行到i=11时,满足i>10的条件,执行i*=2,此时i的值变为22;
  • 随后将22添加到列表,接着循环执行步进操作i++,i变成23;
  • 此时i<16的条件不成立,循环直接终止,导致原本需要处理的12、13、14、15这几个数完全没有进入循环逻辑,最终列表只到22就结束了。

简单来说,修改循环变量破坏了for循环的遍历节奏,让循环提前退出,没有完成1到15的完整遍历。

正确代码示例

示例一:分支判断直接添加对应值

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);

这两段代码的共同点是没有修改循环变量i,保证了循环能从1到15完整遍历每一个数字,只是在添加到列表时根据规则处理值,因此能得到正确结果。

内容的提问来源于stack exchange,提问作者Gafarli Farid

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.24 04:50:14