<本章の目的> while 文と do-while 文を習得する。C言語、C++言語とほぼ一緒。ああっ、とばさないでっ(笑)!
●問題7-1 while 文が終了した後の制御変数の値を表示するプログラムを作って下さい。
○答え
public class While1{
public static void main(String[] args){
int i=0;
while(i<3){
System.out.println(i++);
}
System.out.println("i="+i);
}
}
○実行結果
D:\atsushi\Java\List7-1>java While1
0
1
2
i=3
-- Press any key to exit (Input "c" to continue) --
○解説
while 文の条件式は if 文らと同じく boolean 型です。
答えは、あまり良いループの書き方ではありませんが、
println(i++) みたく、メソッドに渡す引数を書く箇所でインクリメントすることも出来ます。
C言語、C++言語でも関数に渡す引数を書く箇所で同じ事が出来ましたよね。
●問題7-2 問題7-1と同じ動作をするプログラムを do-while 文で作って下さい。
○答え
public class DoWhile{
public static void main(String[] args){
int i=0;
do{
System.out.println(i);
}while(++i<3);
System.out.println("i="+i);
}
}
○実行結果
D:\atsushi\Java\p169>java DoWhile
0
1
2
i=3
-- Press any key to exit (Input "c" to continue) --
○解説
do-while 文の条件式は if 文らと同じく boolean 型です。
○補足
もちろん for 文の条件式も boolean 型でしたね。
●問題7-3 入力を出力にコピーするプログラムを作って下さい。
○答え
import java.io.*;
public class Copy2{
public static void main(String[] args){
BufferedReader reader=new BufferedReader(new InputStreamReader(System.in));
try{
String line;
while((line=reader.readLine())!=null){
System.out.println(line);
}
}catch(IOException e){
System.out.println(e);
}
}
}
○実行結果
D:\atsushi\Java\List7-4>java Copy2
abc
abc
12345
12345
This is Japan.
This is Japan.
私は日本人です。
私は日本人です。
^Z
-- Press any key to exit (Input "c" to continue) --
○解説
readLine メソッドは、入力の終わりに達した場合、null を返します。
「入力の終わり」はWindowsの場合、[CTRL]+[Z]です。
○補足
//実行結果
D:\atsushi\Java\List7-4>java Copy2 < input.txt > output.txt
D:\atsushi\Java\List7-4>
//解説
Javaの機能ではありませんが、
コマンドラインから、記号 < を使うと、標準入力がファイルに切り替わります。
記号 < の次に書いたファイルの内容が、
あたかもキーボードから入力されたかのように処理されるのです。
同様に、記号 > を使うと、標準出力がファイルに切り替わります。
もし指定のファイルが存在しなかったら、新たにその名前のファイルを作ります。
もし指定のファイルが存在していたら、その内容を消去し、新しい内容で上書きします。
java Copy2 < input.txt > output.txt
は、input.txt を入力として、output.txt を出力とする、という意味です。
//input.txt
abc
12345
This is Japan.
私は日本人です。
//output.txt
abc
12345
This is Japan.
私は日本人です。