while

last-modified: Dec./25th/2001

条件分岐は ifswitchで実現します。基本的には if 文で全て実現できますが、場合によっては switch 文の方がすっきりと分かりやすく記述できるでしょう。プログラムの保守管理上、とても重要なことです。

繰り返しも while ループと for ループで実現できます。他にも do while ループなどがありますが、この二つが基本です。最初は、簡単な while ループから説明しますが、 for ループの方が使いやすいでしょう。

基本構文

while (繰り返し条件) {
	ブロック
}

簡単ですね。ブロック内が実行される前に条件が判定され、 true であればブロック内を実行し、次の繰り返しのために条件を判定します。従って、ここに false と記述されていれば、ブロック内は一回も実行されませんし、 true と記述しておけば、無限にループします。

サンプル

以前、 ID チェック用の条件分岐のサンプルを紹介しました。IDcheck.java

class IDcheck {
	public static void main(String[] args) {
		if (args[0].equals("sugai")) {
			System.out.println("ユーザを確認しました。");
		} else {
			System.out.println("そんなユーザはいません。");
		}
	}
}

これは、三行目の if 条件文に登録されているユーザ名を直接記述していましたが、登録されているユーザ名を3人にしましょう。

方法:配列にユーザ名を登録して、コマンドライン引数の文字列と比較する。何れか一つとでも合致すれば是、合致しなければ否。

IDcheck2.java:

class IDcheck2 {
	public static void main(String[] args) {
		String id[]={"sugai", "yasumura", "nawata"};
		int counter=0;
		while (counter <= 2) {	//while = 0, 1, 2 は true
			if (args[0].equals(id[counter])) {
				System.out.print("ユーザを確認しました。");
				return;
			}
			counter++;
		}
		System.out.print("そんなユーザはいません。");
	}
}

"String id[]={...};" は、配列定義の簡略形です。 "String id[]; id=new String[3];" または "String id[]=new String[3];" で、配列 id[]new したほうが分かりやすいかもしれません。

繰り返し条件を counter<=2 として、 counter の値が 0, 1, 2 の間は繰り返し続けるようにしました。

一致条件 args[0].equals(id[counter]) は、大文字と小文字を区別して、文字列の一致を判定します。オブジェクト args[0] のメソッドで、配列の要素 id[counter] が参照している文字列との、等価性を判定します。以前、「文字列の比較」で紹介しました。

return; は、当該メソッドからの脱出です。この例では実行されているメソッドが main() メソッド一つですから、プログラムの実行自体が終了します。このメソッドの前に置かれている void は、「メソッド終了時の戻り値なし」を意味しているので、単にプログラムが終了します。

while ブロックの最後で、変数 counter を1増やしています。インクリメント演算子 counter++; で記述しましたが、 counter=counter+1; の方が分かりやすいかもしれません。

while ループだけに注目すると、最初に counter 変数を 0 に初期化しておきます。ブロック内の実行条件が counter<=2; ですから、一回目は問題なくブロック内が実行されます。一回目のブロック最後で counter 変数の値が1増やされ、ブロックの頭に戻ります。

そこで再び繰り返し条件が判定されます。最初のブロック実行時に counter 変数が1になっていますが、今回も問題なくブロック内が実行され、最後に counter 変数が増やされて、値が2になります。

ブロック内が3回繰り返されると、 counter 変数の値は3になりますので、繰り返し条件から外れて、ブロックから脱出します。

このサンプルでは return; を使って、メソッド自体を終了させているところがトリッキーです。

とりあえず、コマンドライン引数で sugai, yasumura, nawata を入力すると、認証のメッセージが出力されます。

C:\Java> javac IDcheck2.java
C:\Java>java IDcheck2 manabu
そんなユーザはいません。
C:\Java>java IDcheck2 sugai
ユーザを確認しました。
C:\Java>java IDcheck2 yasumura
ユーザを確認しました。
C:\Java>java IDcheck2 nawarin
そんなユーザはいません。
C:\Java>java IDcheck2 nawata
ユーザを確認しました。


Copyright © 2001 SUGAI, Manabu. All Rights Reserved.
SEO [PR] !uO z[y[WJ Cu