電子書籍の厳選無料作品が豊富!

Javaで疑問があります

これをコンパイルを実行すると、xxyxがでてくるんですけど、3つめのyが4つめのxより先にでてくる理由は問題文の{ }のなかで1番内側にきてるからですか?

「Javaで疑問があります これをコンパイ」の質問画像

質問者からの補足コメント

  • 実行結果がxxxyでないのはなぜだろう

      補足日時:2021/02/25 06:54

A 回答 (3件)

> これをコンパイルを実行すると、xxyxがでてくるんですけど、3つめのyが4つめのxより先にでてくる理由は問題文の{ }のなかで1番内側にきてるからですか?



何言ってんだかサッパリ分かりませんが、aの初期値は0ですが、whileに入った途端にa++されて1になります。

a = 1の時、System.out.print("x "); が実行される
a = 2の時、System.out.print("x "); が実行された上、if文に引っかかり、System.out.print("y ")も実行される。
a = 3の時、System.out.print("x ");が実行される。

なお、while(単行演算子)と言う書き方はトリビアルだけど意味が不明瞭になりやすいのでやらない方が良い。
while(a++ < 3) は「aが増える前のaの値を評価して、それが3以下の場合」なので、a自体が3になってても「それ以前の状態」であるaが2としてループが継続される。
前置、後置に関わらず、この形式で条件式の中にインクリメント/デクリメントを突っ込まない方が良いだろう。
しかもJavaみたいに「公式仕様が無い言語」だといつ動作が変更されるか分かったモノではない。
    • good
    • 0
この回答へのお礼

ありがとうございます

お礼日時:2021/02/25 09:27

> 実行結果がxxxyでないのはなぜだろう



逆に何でそう思ったのか訊きたいくらいです。
    • good
    • 0

読みにくいコードを書く価値はない。



読みやすいコードを書くことが最善。
    • good
    • 0

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