0

我正在尝试打印/获取循环变量 i 的值,并在 for 循环之外的另一种方法中使用它。我怎么做?

public void mousePressed() {  
    for (int i = 0; i < 1000; i++){
      boxes[i].openIt();
    }
}
4

2 回答 2

3

你不能,根据定义,值j只能在这个循环中使用。但是当然你可以在这个 for 循环之外声明一个变量,并将它分配给你循环中的某个东西。你到底希望它是什么值?因为最后你的计数器的值j总是一样的。

于 2013-11-05T22:10:11.900 回答
3

声明中声明的变量for仅在for组件和以下代码块中的范围内,请参阅JLS 第 14.14.1.1 节,特别是:

for ( ForInit ; Expression ; ForUpdate ) Statement

如果 ForInit 代码是一个局部变量声明,它的执行就好像它是一个出现在块中的局部变量声明语句(第 14.4 节)。

如果你想让它在 之外可用for,你必须在你想要访问它的位置的活动范围内声明它;例如,就在for循环之外:

int i;
for (i = 0; i < 1000; ++ i)
    ;
// i is accessible in this scope
System.out.println(i);

或者,如果更合适,您可以声明一个单独的变量并将感兴趣的值存储在其中:

int k = ...;
for (int i = 0; i < 1000; ++ i)
    if (condition) // for example
        k = i;
// k is accessible in this scope, i is not
System.out.println(k);

有关简短摘要,请参阅此页面,特别是末尾的Loop Scope示例,其中有一个与您的问题完全相同的示例。

于 2013-11-05T22:18:36.303 回答