2015-10-13 95 views
-1

我试图运行此增强型for循环,但它会引发错误。当我将数组中元素的数量增加到8时,它就起作用了。数组中是否有最少数量的元素可用?元素的最小数目Java中的增强型for循环

public class Demo { 
    public static void main(String[] args){ 
     int numbers[]; 
     numbers = new int[] {5,6,7,5,5}; 

     for(int i : numbers){ 
      System.out.println(numbers[i]); 
     } 
    } 
} 

回答

3

不,没有最小数量的元素供它使用;你误解了它的功能。分配给i的值是数组中的值,而不是数组中的索引,但是您将这些值视为索引,并且在5个元素的数组中,索引7(或56)不存在。这也是为什么当你放8个元素时它会工作。索引7现在存在。

只需打印i。这是价值。

System.out.println(i); 

您可能要考虑重新命名ivalue,或number,或更多的东西指示的是什么,为了避免混淆,因为i通常用于在标准for循环索引变量。

+0

也许建议将'i'重命名为'number',因为'i'对于索引变量是“保留”的(通过约定),这是引起混淆的原因。 – Andreas

0

打印i。不是数字[I] i是实际值不项目索引数组中并有例如[5]没有数字,这将抛出异常

0

该代码包含一个简单的逻辑错误:

for(int i : numbers){ //<-- loop over all integers in numbers (i will hold the value in the array 
    System.out.println(numbers[i]); //<-- get the element at position i 
} 

numbers[5] 
numbers[6] 
numbers[7] 
... 

决定是否使用一个foreach环直接迭代数组中的所有元素(for(int i : numbers))和简单地从迭代打印值:

基本上您的代码会做的该序列的阵列中读取( System.out.println(i)),或者遍历指数,[0 , numbers.length)并使用System.out.println(numbers[i])

您遇到的“最小数量”只是由于7是数组中最大的数字,因此数组必须至少为8才能访问numbers[7]而不会引发任何异常。