Java数组是如何处理的?
首先是一个总结:我正在研究一些关于CodingBat的基本问题。com(对初学者或像我这样的生锈的人来说是好东西)并决定以“新”的方式循环数组
我说我“生锈了”
这是有效的:
public int arrayCount9(int[] nums) {
int b=0;
for(int i=0; i<nums.length;i++){
if(nums[i]==9) b++;
}
return b;
}
这不起作用:
public int arrayCount9(int[] nums) {
int b=0;
for(int i: nums){
if(nums[i]==9) b++;
}
return b;
}
错误:Exception:java。lang.ArrayIndexOutofBounds异常:9(行号:4)
*所以问题是如果(nums[i]==9)b++;*
因此,我的问题是:
1)*问题出在哪里*
2)*有人有规范参考吗*
关于#2,我尝试过谷歌搜索,但没有找到我要找的东西,即使有教程,我也无法完全理解下面的伏都教
我先谢谢你
# 1 楼答案
您对for-each循环的工作方式感到困惑
这样做,看看你是否能解决问题
# 2 楼答案
请参见规范的这一部分:
http://docs.oracle.com/javase/specs/jls/se7/html/jls-14.html#d5e17093
这将解释一切。增强的for循环将立即从迭代器返回值,因此您的“i”实际上是数组值而不是索引
# 3 楼答案
当您以“新方式”使用它时,您不再需要访问数组,您已经拥有循环中每个项的引用
# 4 楼答案
使用迭代值作为索引。应该是:
因此,如果数组中的值大于数组大小,则会出现索引越界异常