java - 为什么这个 Java foreach 循环会抛出错误?

标签 java loops

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

相关文章:

java - Spring 安全 RequestHeaderAuthenticationFilter

java - JMockit:模拟父类和子类

Java - 从另一个类更新对象

循环内的 JavaScript 闭包——简单实用的例子

c# - Powershell for 循环(来自 c#)

java - 如何使条码扫描仪只扫描一次(Google Mobile Vision API)?

java - 通用类未找到异常

java - 嵌套 while 循环在嵌套循环完成之前执行顶部循环 - Java

Java 8 : Compare multiple attributes in two lists

c++ - C++ 的嵌套循环