在 for-each 循环之外声明 int i 会导致错误吗?

-2 java arrays foreach

public static void main(String[] args) {
    int[] arr = {-1,1,1};
    int i;
    for(i: arr){
        System.out.println(i);
    }
}
Run Code Online (Sandbox Code Playgroud)

上面的代码给出了错误。错误:for 循环的初始值设定项错误

但下面的代码工作正常。

public static void main(String[] args) {
    int[] arr = {-1,1,1};
    for(int i: arr){
        System.out.println(i);
    }
}
Run Code Online (Sandbox Code Playgroud)

我能知道为什么在 for-each 循环之外初始化 i 是一个错误吗?

Jor*_*orn 6

因为你根本不能像那样使用 for 循环。该for in语法要求您使用一个作用域为循环的新变量。不过,你可以像这样使用它:

public static void main(String[] args) {
    int[] arr = {-1,1,1};
    int i;
    for(i = 0; i < arr.length; i++){
        System.out.println(arr[i]);
    }
}
Run Code Online (Sandbox Code Playgroud)

  • 请注意,这并不完全相同,因为在您的情况下,“i”是索引,而在 OP 中,“i”是元素值。 (3认同)