while を使ったLoop



”q”を入力されるまでプログラムを繰り返します。

import  java.io.*;

public class ExamWhile1 {
    public static  void main(String args[])  {
        // accept  from console
        BufferedReader br  = new  BufferedReader(new InputStreamReader(System.in),  1);

        //loop  until  "q" is accepted
        String  end_s  =  " ";
        while (!(end_s.equals("q")))  {
            try {
                  System.out.println("Please  input  'q'  if you want to finish.");
                  end_s  =  br.readLine();
                  if (!(end_s.equals("q")))  {
                     System.out.println("Hello");
                  }
             }  catch(IOException  ioe) {
                     System.out.println(ioe);
             }
         }
    }
}


<実行結果>
コンソールから”q”を入力するまで、”Hello"の表示を繰り返します。

<構文>    while ( 続行条件 )        
            { 繰り返し実行文 }                               


続行条件とは、その条件を満たした場合は繰り返しを続行し、その条件を満たさなかった場合に終了する条件。
上の例では、end_s.equals("q")でend_sオブジェクトの内容がが”q”と等しいかどうかを判定しています。
Stringオブジェクトは、==演算子で比較した場合、同一のオブジェクトかどうかが判定され、
保有する文字列が同じ内容かどうかの判定ではありません。
つまり、たとえ”q”が入力されても、入力されたend_sオブジェクトと”q”はオブジェクトとしては2つ存在し、同一ではなく、
それゆえ比較の結果としてFalseが返されます。

whileに続く繰り返し実行文は条件が真の時に実行されますが、
サンプルでは”q”でない時に実行するのが、目的です。
その為に!(end_s.equals("q"))
と記述しています。