在里面声明循环

时间:2016-08-06 17:58:50

标签: java variables scope

   for(int i=0; i < n; i++){
            arr[i] = in.nextInt();
        }
        in.close();
        for( i=n-1;i>=0;i--){
            System.out.print(arr[i]+" ");
        }

这显示我未初始化的错误。

 for(int i=0; i < n; i++){
            arr[i] = in.nextInt();
        }
        in.close();
        for(int i=n-1;i>=0;i--){
            System.out.print(arr[i]+" ");
        }

这很有效。任何人都可以解释原因吗?

2 个答案:

答案 0 :(得分:0)

i(在第一个示例中)的范围仅是第一个for循环。在第一个循环之前声明i,你可以(你似乎想要)

int i;
for(i=0; i < n; i++){
    arr[i] = in.nextInt();
}
in.close();
for(i=n-1;i>=0;i--){
    System.out.print(arr[i]+" ");
}

,我更愿意使用try-with-resources(而不是在那里嵌入in.close()

答案 1 :(得分:0)

在java中有一个块级范围的概念,意味着我只限于它的for循环。所以下次你必须在使用之前初始化它,或者你可以在类级别初始化它以允许它被使用尽你所能。