Java はじめて12 〜ループ処理B: while文〜

イントロダクション

while文は今までやった、for文との大きな違いは、「シンプル」というところです。
具体的には、「無限ループしたい」と思ったらなら下のようなコードでできます。

while (true) {
   // この部分が無限ループする
}

この無限ループを使用して、下のようなゲームを作成してみました。

while文の書き方

今回はwhile文をやります。今までのfor文と同じような感じですが、とてもシンプルです。whileの中の条件がFalseになると処理を抜けます。

while(条件) {
     // 処理
}


for文と比べて、初期化処理とか後処理がないので、まぁ楽です。
実際にコンソールゲームを作成するのにもwhile文を使用しています。初期化処理などが入らないので。。。

public static void main(String[] args) {
    Lv3_3_RefactorLv2 main = new Lv3_3_RefactorLv2();
    // 標準入力
    Scanner input = new Scanner(System.in);

    while(true) {
        System.out.println("コマンドを入力してください: ");
        String inStr = input.nextLine();
        CommandIF cmd = main.getCommandIF(inStr);
        if (cmd != null) {
            cmd.execute();
            continue;
        }
        if ("bye".equals(inStr)) {
            System.out.println("Good Bye");
            break;
        } else {
            System.out.println("対象のコマンドは登録されていません。: " + inStr);
        }
    }
}

これは無限ループを行なっているので、条件を指定しているのとは違うのですが。。。

public static void main(String[] args) {
   int i = 0;
   while(i < 3) {
       System.out.println("カウント: " + i);
       i++;
   }
}

これは、よくある形のwhile文です。for文と同じようなことをやっています。

問題

while文を一回使用して、コンソール出力にて下のような絵を描画してください。「*(アスタリスク)」を使って描画します。
上から順にアスタリスクが1個, 2個, 3個, 4個, 5個, 6個と並んでいます。

*
**
***
****
*****
******

<Java関連の動画リスト>

ゲームループ

シンプルに無限ループの中に、ループを抜ける条件をつけてやるような形での実装です。
LWJGLの解説をしているときのゲームループは入力~画面の更新まで実装していましたが、今回は細かい部分を省略しています。

//標準入力
Scanner scan = new Scanner(System.in);
while (true) {
    String input = scan.nextLine();

    if ("bye".equals(input)) {
        // ループを抜ける
        break;
    }
}

<処理内容>

  1. 標準入力を受け取ります。
  2. "bye"と入力されたときプログラムを終了します。

逆にいうと、"bye"と入力しなければ、何を入力しても、ループして再度入力を求める処理が走ります。
String input = scan.nextLine();この処理で、入力を受け取ります。

なので、次のようなプログラムも組みやすいということです。

  1. 入力を受ける。
  2. 計算をする。
  3. 計算結果を表示する。

単純な電卓アプリを作成することも容易です。

他にも、このような形での実装は、いろんな部分で使用されます。

さらに。。。

他にも、ループ文があるので、使いやすいものを使用してアプリを作って遊んでみるのが良い学習になります。
でわでわ。。。

<<< 前回 次回 >>>

投稿者:

takunoji

音響、イベント会場設営業界からIT業界へ転身。現在はJava屋としてサラリーマンをやっている。自称ガテン系プログラマー(笑) Javaプログラミングを布教したい、ラスパイとJavaの相性が良いことに気が付く。 Spring framework, Struts, Seaser, Hibernate, Playframework, JavaEE6, JavaEE7などの現場経験あり。 SQL, VBA, PL/SQL, コマンドプロント, Shellなどもやります。

コメントを残す