Java数组是如何处理的?

Java数组是如何处理的?,java,arrays,Java,Arrays,首先是一个总结:我正在研究CodingBat.com上的一些基本问题,这对初学者或像我这样的生疏者来说是个好东西,我决定以新的方式循环数组 我说我生锈了 这项工作: 错误:Exception:java.lang.ArrayIndexOutOfBoundsException:9行号:4 *所以问题是ifnums[i]==9b++* 因此,我的问题是: 1*问题是什么* 2*有人有规格参考吗* 关于2,我尝试过谷歌搜索,但还没有找到我要找的东西,即使有教程,我也无法完全理解下面的伏都教 我先谢谢你

首先是一个总结:我正在研究CodingBat.com上的一些基本问题,这对初学者或像我这样的生疏者来说是个好东西,我决定以新的方式循环数组

我说我生锈了

这项工作:

错误:Exception:java.lang.ArrayIndexOutOfBoundsException:9行号:4

*所以问题是ifnums[i]==9b++*

因此,我的问题是:

1*问题是什么*

2*有人有规格参考吗*

关于2,我尝试过谷歌搜索,但还没有找到我要找的东西,即使有教程,我也无法完全理解下面的伏都教

我先谢谢你


编辑使用迭代值作为索引。应该是:

for(int i: nums){
    if(i==9) b++;
}

因此,如果数组中的值大于数组大小,则会出现索引越界异常。

当您以新的方式使用它时,您不再需要访问数组,您已经拥有循环中每个项的引用

public int arrayCount9(int[] nums) {
  int b=0;
   for(int i: nums){
     if(i == 9) b++;
   }
  return b;
}

您对for-each循环的工作方式感到困惑。 这样做,看看你是否能解决问题

   for(int i: nums){
     System.out.println(i);
   }

请参见规范的这一部分:


这将解释一切。增强型for循环将立即从迭代器返回值,因此您的“i”实际上是数组值而不是索引。

在第一个示例中,我是索引,但在第二个示例中,我是值。我喜欢这种让人们理解的答案,而不是复制和粘贴。
public int arrayCount9(int[] nums) {
  int b=0;
   for(int i: nums){
     if(i == 9) b++;
   }
  return b;
}
   for(int i: nums){
     System.out.println(i);
   }