外部变量不可用于内部增强

时间:2013-11-16 19:36:40

标签: java

任何人都可以找到我在以下代码中收到错误的原因:

public class EnhancedFor {

    public static void main(String[] args) {

        int i;
        int[] test = new int[10];

        for(i:test)
            System.out.print(i+" ");
    }

}

5 个答案:

答案 0 :(得分:1)

尝试类似:

int[] test = new int[10];
for(int i : test)
    System.out.print(i + " ");

有关详细信息,请参阅this

答案 1 :(得分:1)

可能因为这在语法上不正确。增强的for循环看起来像这样:

for(int i : test) {
  System.out.println(Integer.toString(i));
}

答案 2 :(得分:1)

public static void main(String[] args) {

    int[] test = new int[10];

    for(int i :test)
        System.out.print(i+" ");
}

答案 3 :(得分:0)

您必须在增强型for语句中声明变量:

for(int i : test)

答案 4 :(得分:0)

当我们在其增强形式中编写for循环以迭代容器(即数组或集合)时,我们通常总是从开始到结束迭代。该声明的格式为:

for ( Type VariableDeclaratorId : Expression ) 
            Statement 

必须定义Expression的类型Type,并且发生Iterable或数组类型或编译时错误。我们必须在enhanced-for循环语句中声明具有特定类型的新变量id的原因是,它限制了循环体内变量id的范围,提供了更多clarity and safety

根据 the java language specification: 14.14.2 The enhanced for statement

  

增强的for语句相当于一个基本的for语句   形式:

for (I #i = Expression.iterator(); #i.hasNext(); ) {
    VariableModifiers_opt
 TargetType Identifier =
        (TargetType) #i.next();
    Statement
}
  

#i自动生成的标识符,该标识符与范围内的任何其他标识符(自动生成或其他标识符) distinct (第6.3节) )在增强型for语句发生时。