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

使用增强for循环累加数组元素时抛出数组越界异常,求助原因

问题分析与解决

嘿,我来帮你揪出这个bug的根源!先看你写的代码:

int[] array = {1,2,3}; 
int total = 0; 
for(int counter : array) { 
    total = total + array[counter]; 
} 
System.out.println(total);

核心错误:误解了增强for循环的变量含义

增强for循环(也就是for-each循环)和普通for循环的逻辑完全不同:

  • 普通for循环里的循环变量是数组的索引(从0到array.length-1),所以array[counter]能正确获取对应位置的元素。
  • 但增强for循环里的counter是数组中的元素值本身,不是索引!

你的数组是{1,2,3},咱们一步步走一遍循环过程:

  1. 第一次循环:counter被赋值为数组第一个元素1,你执行array[1]取到2,total变成0+2=2,这步没问题。
  2. 第二次循环:counter变成第二个元素2,array[2]取到3,total变成2+3=5,这步也OK。
  3. 第三次循环:counter变成第三个元素3,你尝试取array[3]——但你的数组只有3个元素,合法索引是0、1、2,array[3]直接超出了数组范围,自然就抛出IndexOutOfBoundsException了!

正确的增强for循环写法

既然增强for循环直接把元素值给你了,那直接累加这个值就行,根本不需要再通过索引去数组里取:

int[] array = {1,2,3}; 
int total = 0; 
for(int num : array) { 
    total += num; // 直接用元素值累加,简单又正确
} 
System.out.println(total); // 输出6,结果正确

这样修改后,代码就能正常运行,得到你想要的累加结果啦。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 04:13:42