ループ変数 i の値を印刷/取得して、for ループの外側の別のメソッドで使用しようとしています。それ、どうやったら出来るの?
public void mousePressed() {
for (int i = 0; i < 1000; i++){
boxes[i].openIt();
}
}
できません。定義により、の値はj
このループ内でのみ使用できます。もちろん、この for ループの外で変数を宣言して、ループ内の何かに割り当てることもできます。正確にどのような値にしたいですか?最後のカウンターの値j
は常に同じになるためです。
ステートメントで宣言された変数は、コンポーネントと次のコード ブロックで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);
簡単な要約については、このページを参照してください。特に、最後のループ スコープの例には、質問とまったく同じ例があります。