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

Java增强for循环无法正确获取nextInt输入值的问题咨询

增强for循环操作数组赋值出错的原因与解决方法

你遇到的问题核心是完全误解了增强for循环的工作逻辑,导致数组赋值时只覆盖了同一个位置,另一个位置始终是默认值。

问题根源

Java的增强for循环(For-Each Loop)是用来遍历数组/集合的元素值,而非获取数组索引。看你的代码:

for(int val : testArray) {
    testArray[val] = input.nextInt();
}
  • 刚初始化的int[] testArray默认所有元素都是0,第一次循环时,val取的是testArray[0]的值(也就是0),于是你给testArray[0]赋了第一个输入值;
  • 第二次循环时,val取的是testArray[1]的值(还是默认的0),你又给testArray[0]赋了第二个输入值,直接覆盖了第一次的结果;
  • 整个过程中testArray[1]从来没被赋值,始终是默认的0,所以最后打印出的是第二次输入的数和0。

正确写法

给数组逐个元素赋值,普通for循环是最直接合理的选择:

int[] testArray = new int[2];
Scanner input = new Scanner(System.in);

// 通过索引遍历,逐个给数组元素赋值
for(int i = 0; i < testArray.length; i++) {
    testArray[i] = input.nextInt();
}

for(int x = 0; x < testArray.length; ++x){
    System.out.println(testArray[x]);
}

如果非要用增强for循环(完全没必要,属于舍近求远),可以额外加计数器模拟索引:

int[] testArray = new int[2];
Scanner input = new Scanner(System.in);
int index = 0;

// 用增强for循环仅做遍历次数控制,靠计数器指定赋值索引
for(int ignored : testArray) {
    testArray[index++] = input.nextInt();
}

for(int x = 0; x < testArray.length; ++x){
    System.out.println(testArray[x]);
}

内容的提问来源于stack exchange,提问作者Ken Kiarie

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.20 17:18:08