mush0ku’s blog

無職の間にやったこと・感じたことを書き留めたい

for 文の 変化式について

スッキリわかるJava入門 第2版 (スッキリシリーズ)

スッキリわかるJava入門 第2版 (スッキリシリーズ)

 

 第3章 条件分岐と繰り返し

 


 

public class Loop{
    public static void main(String args ){
        for( int i=0; i<10; i++){
            System.out.println(i + "ループ目");
        }
        System.out.println("全部で"+i+"ループ");

    }
}

 

こうすると…

 

Loop.java:6: エラー: シンボルを見つけられません
                System.out.println("全部で"+i+"ループ");
                                         ^
  シンボル:   変数 i
  場所: クラス Loop
エラー1個

 

こうなる。

回避するには

public class Loop{
    public static void main(String args ){
        int i;
        for( i=0; i<10; i++){
            System.out.println(i + "ループ目");
        }
        System.out.println("全部で"+i+"ループ");
    }
}

PHPと違って、iはfor文の中でしか参照できない。ブロック内で宣言した変数はブロック内でしか参照できない。

 

 

ちなみに結果は

0ループ目
1ループ目
2ループ目
3ループ目
4ループ目
5ループ目
6ループ目
7ループ目
8ループ目
9ループ目
全部で10ループ

となる。

  1. iが9のとき、i<10がtrueなので、「9ループ目」と出力する
  2. 出力後、 i++が実行され、iは10になる
  3. iが10のとき、i<10 がfalse になるので、ループを抜ける
  4. 「全部で10ループ」と出力される