我有以下简单的Java语句:
public static void main(String[] args)
{
int[] grades = {102, 105, 98, 105};
Sorts.selectionSort(grades);
for (int grade : grades) {
// {
System.out.println(grade);
try {
System.out.print(grades[grade] + " ");
} catch (ArrayIndexOutOfBoundsException e) {
System.out.println("Error!");
}
}
我得到以下输出:
102
Error!
105
Error!
98
Error!
105
Error!
为什么循环会迭代到数组中没有的值?我很困惑
谢谢。
最佳答案
int grade
是数组中每个元素的值,而不是索引。
如果要获取int[] grades = {102, 105, 98, 105};
的每个元素,则应使用常规的for
循环,如下所示:
for (int i = 0; i < grades.length; i++) {
System.out.println(grades[i]);
}
这将起作用,因为数组中每个元素的索引范围是0到3。
看一下enhanced
for loop
文档。关于java - 为什么此Java foreach循环会引发错误?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/15725362/