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

Java中使用for-each循环接收数组元素语法是否可行?为何打印出垃圾值

语法合法性判断

该代码语法完全合法,可以正常通过编译,但逻辑存在根本性错误,无法实现给数组所有元素赋值输入的需求。

问题根因

  • Java的增强for循环(for-each)遍历数组时,拿到的循环变量是数组当前元素的值的副本,既不是数组的下标索引,也不是数组元素的引用。
  • 你代码中for(int i:arr)里的i,每次循环都会被赋值为arr数组当前位置已经存储的数值,而非当前位置的下标。
  • 新创建的int数组默认初始值全为0,因此你所有的输入值都会被重复赋值到arr[0],数组其余位置的元素始终未被修改,保留初始值;如果你输入的数值超过数组的最大下标,还会触发ArrayIndexOutOfBoundsException数组越界异常。你打印时看到的“垃圾值”就是数组其余位置未被修改的初始值,或是越界访问导致的异常输出。

正确实现方案

给数组元素赋值需要通过下标操作,必须使用普通for循环:

for(int i = 0; i < arr.length; i++) {
    arr[i] = sc.nextInt();
}

内容的提问来源于stack exchange,提问作者Sayak Sarkar

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 10:06:04