アプリ版:「スタンプのみでお礼する」機能のリリースについて

Javaの参考書で、下記の文がありました。

...
while(true){
処理
}
...

whileの条件式で“true”と書いてありますが、trueではなくなる(falseになる)のは
どのような処理が実行された時でしょうか?

出来れば具体的なコードでご教示頂けると助かります。

宜しくお願い致します。

A 回答 (3件)

> 要は、このwhileを抜けるのは、どういった処理が実行されたらなのかな??


・「処理」の中でbreak文が実行された(更なるループ内かswitch文の中にないこと)
・「処理」の中でreturn文が実行された(この場合この文があるメソッドから抜ける)
・「処理」の中あるいはそれから呼び出されるメソッドから例外が投げられた(この場合投げられた例外をキャッチできるところまで戻る。どこでもキャッチできなかった場合はプログラム終了)

たぶんあなたは「こんないつまでも終わらないループにどんな意味があるのか」と思われて質問されたと思います。
確かにこれ(無限ループ)はそれを抜け出す手段をループ内に設けない限り意味がありません(というか、普通は作ってはいけない)。

しかし、実はわざと作られた無限ループは結構利用されているテクニックです。

たとえば、AWTやSwingなどのGUIプログラミングで何らかのイベント部分のみを書くだけでウィンドゥが書かれたとおりの動作を行いますが、あれはAWTやSwingなどの内部で以下のような処理を行っているからです。
(あくまでも疑似コードで、詳細は異なるかもしれませんが)

while(true){
 if(OSからのイベントが1件以上あるか?){
  OSからのイベントを1件受け取り;
  受け取ったイベントから処理を行うメソッドを決定し、パラメータを作成;
  メソッド実行; // GUIフレームワーク既定のメソッドかもしれないし、プログラマーが記述したイベントハンドラかもしれない
  if(メソッド実行結果が「プログラム終了」?)
   break;
 }
}

上記以外にも、何かを待つ処理の場合は、無限ループ内でその何かが起きたかどうかかを判定し、何かが起きたらbreakする、というのが定番処理になっています。
    • good
    • 0
この回答へのお礼

いやー、、、そんな使い方もあるんですね。。。
GUIはまったく勉強してないので、未知の領域です。。。
ご丁寧な回答ありがとうございます。

お礼日時:2011/06/28 23:27

while(true){


}
で、永久ループになります。

抜けるには、breakを使います。

例えば、

int i=0;

while(true){
i++;
if(i==3){
break;
}
}

とすれば、iが3のときにループを抜けることが出来ます。
    • good
    • 0

true って定数だよね.

この回答への補足

要は、このwhileを抜けるのは、どういった処理が実行されたらなのかな??
具体的に、分かりますか?

補足日時:2011/06/28 02:04
    • good
    • 1

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!