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"))
と記述しています。