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 ユーザを確認しました。
SEO | [PR] !uO z[y[WJ Cu | ||