• ベストアンサー

while構文について質問

以下は、ソースコードの一部です。それを見た上で私の質問に答えてください。 int i=0; while(true) System.out.println(i); i++ 質問:何故、whileの反復条件に「true」を書くと、無限ループになるのですか? 私の仮説では、trueは「条件を満たす」という意味だから、よって反復条件を満たし続けるので、永遠にiを表示し続けるということでしょうか?

質問者が選んだベストアンサー

  • ベストアンサー
  • edomin7777
  • ベストアンサー率40% (711/1750)
回答No.1

> 私の仮説では、trueは「条件を満たす」という意味だから ちょっと違います。 while文は括弧の中の条件式が「True」の間回り続けます。 なので、質問のように「True」を入れると常に判定が「True」になるので、永久ループになるのです。 違うと言うのは、「True」はTrueで「条件を満たす」ではないからです。 条件判断の結果、条件を満たしていればTrueを返すと言っても良いです。

wantanton
質問者

お礼

丁重なご回答ありがとうございます^^ つまり、無限ループし続ける理由は、「trueは「条件の成立」を表すから、whileは条件が成立している限り処理を実行し続けるから、無限ループし続ける」ということでしょうか?

wantanton
質問者

補足

お礼で書いた追加の質問訂正します 汗 無限ループの理由は、「while構文は、括弧の中の反復条件の判定の結果trueなら処理を行うので、括弧の中にtrueを書くと、その判定は常にtrueなので、無限ループする」こういうことでしょうか?

その他の回答 (2)

  • edomin7777
  • ベストアンサー率40% (711/1750)
回答No.3

#1です。 #2さんへ。 この質問者さんは、「自分で設問し、それに対する自分の仮説が合っているかどうか?」の質問をする方で有名な方です。 (悪い意味ではありません。) (ちょっと諄い時があるけど…。) なので、仮説に対する回答をしないと質問者さんは満足しないと思いますよ…。 ※ 回答じゃなくて済みません。

  • jjon-com
  • ベストアンサー率61% (1599/2592)
回答No.2

ANo.1が正しいのはよく分かりますけれど, 初心者が「私の仮説では…」のような説明をしたとしても,私的には違和感はありません。それでいいんじゃないかと思います。 質問者の方へ。 その仮説を検証するために次のコードを実行して,true(真) と false(偽) という予約語が何を指しているのか確認してみてください。iに代入する値を変えて試してみてもよいでしょう。 class Q6804373 { public static void main(String args[]) { int i = 0; System.out.println(i == 0); System.out.println(i > 1); } }

wantanton
質問者

お礼

丁重なご回答ありがとうございます^^ さっそくソースコード試してみます^^