我有以下简单的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/

10-12 14:40