while 文last-modified: Dec./25th/2001
条件分岐は if 文か switch 文で実現します。基本的には 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 ユーザを確認しました。