繰り返し命令--- while命令


■ while 命令の書き方

代表的な繰り返し命令と while命令があります。

while命令の特徴は、繰り返す回数が最初は不明であっても繰り返しを記述できることです。

while命令の書き方は、次のようになります。

   while(繰り返し条件式){
             繰り返し実行させる処理
          }

繰り返し条件式には、if命令の条件式の記述方法で書きます。それが判定される時点で当てはまれば(真(true)ならば)処理を繰り返します。その条件式が当てはまらなければ繰り返しを止めます。 重要なことは、「繰り返し実行させる処理」の中に、繰り返し条件を変化させる命令が必ずないといけません。それがないと、一旦繰り返しを始めると無限繰り返しとなります。

次のプログラムは、テキスト(81ページ)に掲載されている電卓プログラムを多少変更したプログラムの例です。
数値を入力するとその数値を合計計算し、=(イクオール)を入力すると合計計算を終了しを合計結果を出力して終了するものです。但し、このプログラムでは、数値以外のデータが入力された時のエラー処理は行われておりません。

// 数値を入力し、合計を表示する。
import java.io.*;

public class JcWhile2{
    public static void main(String[] arges) throws IOException {
	String  ss;
	int dt, sum;
                   
	BufferedReader kbd = new BufferedReader(new InputStreamReader(System.in));
	sum=0;
	dt=-1;
                   ss=kbd.readLine();
                   while(!(ss.equals("="))){
                             dt=Integer.parseInt(ss);
                             sum=sum+dt;
                             ss=kbd.readLine();
                   }
                   System.out.println("合計="+sum);
    }
}
このプログラムを実行させると次のようになります。
[egi@taro prog]$ java JcWhile2
1
2
3
4
5
6
7
8
9
0
=
合計=45
[egi@taro prog]$ 

このプログラムでは、終了条件が「=でないならば」繰り返し実行するようになっています。=は数値ではなく文字列になります。そのために多少変更が必要です。

■ while命令を使ったプログラム例1

次のプログラムは、整数値を入力させ、入力された数値の中で最も大きい数値(最大値)を最後に表示するプログラムです。.(ピリオド)を入力するとデータ入力を終了します。 しかも、このプログラムは、数値以外のデータを入力すると『数値を入力して下さい』とエラー表示し、再入力できるようになっています。

// 正数値を入力し、入力された数値のなかで最大値を表示する。
//.(ピリオド)が入力されたら終了とする.
import java.io.*;

public class Saidai{
    public static void main(String[] arges) throws IOException {
	String  ss;
	int dt, max;
                   
	BufferedReader kbd = new BufferedReader(new InputStreamReader(System.in));
	max=-999;
	dt=-1;
                   System.out.println("整数の数値を入力して下さい.");
                   System.out.println("終わりは,ピリオドを入力して下さい.");
                   ss=kbd.readLine();
                   while(!(ss.equals("."))){
                             try{dt=Integer.parseInt(ss);
                             if(dt>max){max=dt;}
                             ss=kbd.readLine();
			     }
                             catch(NumberFormatException e){
                                     System.out.println("数値を入力して下さい");
                                     ss=kbd.readLine();}
                }
                   System.out.println("最大値="+max);
    }
}


次にこのプログラムの実行結果を示します.
[egi@taro]$ java Saidai
整数の数値を入力して下さい.
終わりは,ピリオドを入力して下さい.
e
数値を入力して下さい
2
3
5
y
数値を入力して下さい
2
3
5
98
43
4
.
最大値=98
[egi@taro]$ 

プログラミング / 江木