我正在尝试运行此增强型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]);
}
}
}
答案 0 :(得分:3)
不,没有最低数量的元素可供使用;你误解了它的作用。分配给i
的值是数组中的值,而不是数组中的索引,但是您将值视为索引,并且在5个元素的数组中,索引7
(或{{ 1}}或5
)不存在。这也是为什么当你放8个元素时它的工作原理;索引6
现已存在。
只需打印7
即可。这是价值。
i
您可能需要考虑将System.out.println(i);
重命名为i
或value
,或更多地指示它是什么,以避免混淆,因为通常使用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]
而不会抛出任何异常。