最小元素数在Java中增强for循环

时间:2015-10-13 21:26:38

标签: java loops for-loop

我正在尝试运行此增强型for循环,但它会引发错误。当我将数组中的元素数量增加到8时,它就可以工作了。数组中是否有最少数量的元素可供使用?

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 个答案:

答案 0 :(得分:3)

不,没有最低数量的元素可供使用;你误解了它的作用。分配给i的值是数组中的值,而不是数组中的索引,但是您将值视为索引,并且在5个元素的数组中,索引7(或{{ 1}}或5)不存在。这也是为什么当你放8个元素时它的工作原理;索引6现已存在。

只需打印7即可。这是价值。

i

您可能需要考虑将System.out.println(i); 重命名为ivalue,或更多地指示它是什么,以避免混淆,因为通常使用number对于标准i循环中的索引变量。

答案 1 :(得分:0)

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

答案 2 :(得分: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])

&#34;最小号码&#34;您遇到的只是因为7是数组中最大的数字,因此数组必须至少长度为8才能访问numbers[7]而不会抛出任何异常。