Mono Works

チラシのすきま

メモ:Java for文と変数の有効範囲

Javaの勉強も少しずつ進んでます。if文、switch文、for文などが出てきました。if文と switch文は、プログラムが上から下に流れて終わりますが、for文は、処理を繰り返すという少しややこしい処理なので、メモしておきます。

androiddevmemo20160125_01

上記画像は、下記の for文のプログラムを実行した結果です。

public class SampleFor {
  public static void main(String[] args) {
    for (int i = 0; i < 3; i++) {
      System.out.println(i);
    }
    System.out.println("end");
  }
}

上記 for文の構造は、以下のようになります。

public class SampleFor {
  public static void main(String[] args) {
    for (1初期値の設定; 2処理を繰り返すかどうかの条件; 43の処理が終わった後の処理) {
      32の条件が満たされたらおこなう繰り返しの処理;
    }
    System.out.println("end");
  }
}
  1. 初期値の設定

    int i = 0

    整数型の変数 iの値として 0をセット

  2. 処理を繰り返すかどうかの条件

    i < 3

    iが 0なので条件クリア

  3. 2の条件が満たされたらおこなう繰り返しの処理

    System.out.println(i)

    iの値 0を画面に表示して改行

  4. 3の繰り返し処理が終わった後の処理

    i++

    iの値 0に 1を加算して iの値を 1にする

以下、2の条件を満たす限り、2→3→4のループを繰り返します。

ここまでは基本です。続いて、終了する時の変数 iを最後の行に表示させようとして、以下のように変更します。

public class SampleFor {
  public static void main(String[] args) {
    for (int i = 0; i < 3; i++) {
      System.out.println(i);
    }
    System.out.println("最後は" + i + "です。");
  }
}

これを実行すると、下記のエラーが出力されます。変数 iがfor文の中で宣言されているので、その外側にある iは宣言されていないことになっています。

SampleFor.java:6: エラー: シンボルを見つけられません

    System.out.println("最後は" + i + "です。");

            ^

  シンボル:   変数 i

  場所: クラス SampleFor

エラー1個

変数 iをfor文の「内」と「外」で同じ扱いとしたい場合は、下記の位置で変数 iを宣言します。

public class SampleFor {
  public static void main(String[] args) {
    int i;
    for (i = 0; i < 3; i++) {
      System.out.println(i);
    }
    System.out.println("最後は" + i + "です。");
  }
}

上記を実行すると、下記のようになります。

0
1
2
最後は3です。
 -- Press any key to exit (Input "c" to continue) --

使用している参考書はこちら。

コメント

コメントなどありましたら、GitHubのディスカッションへお願いします。(書き込みには、GitHubのアカウントが必要です)
執筆者
"ぽぽろんち" @pporoch
pporoch120
Mono Worksの中の人。好きなことをつらつらと書き留めてます。
ギターを始めてから 練習動画をYouTubeにアップしてます。ご笑納ください。
"DQX@ぬここ(UD487-754)、コツメ(NO078-818)"
採用案内