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のみスコープ内にあります。特に、JLS セクション 14.14.1.1を参照してください。for

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);

簡単な要約については、このページを参照してください。特に、最後のループ スコープの例には、質問とまったく同じ例があります。

于 2013-11-05T22:18:36.303 に答える