スナックelve 本店

バツイチ40代女の日記です

やめてとめて、初心者を見ると自分の苦労がブワッとして老害になって怖がられて衰退していくの

というわけでみどりの小野 (id:yutoma233)さんには目と耳塞ぎながら耐えてITパスポート取ってほしいと願うしかないのですが(メンション飛ばすのやめろよw)、Java、どうなんすか。難しくないっすか!?
で、Javaの難しさは置いておいてif文のおーはなし。このへん、どんな言語にもあるから大事。とても大事。

if else文、100までの整数xがあるとき、80以上100以下ならA、50以上80未満ならB を返せみたいな問題で、なぜ答えがif (x>=80)else if (x>=50)になるのかしばらく悩んでた。
プログラムが順番に実行されるのですね!

elve on Twitter: "@yutoma233 @AzuLitchi いや正しいのか・・・連続ifで条件が合えば上書きになるんすけどね・・・フローチャート描きたい!! すっごいクソレスおばさんハッスルハッスル気分!! ああ!! 仕事どころじゃねぇ!!←" / Twitter

これはもう絶対問題が悪いんだけど、プログラムが順番に実行される*1がわからん段階で、else if !? ッと言うので心がザワつく層が多いと思うのですよ。
if→else→else ifの順でしっかり理解しないと後でドはまりする元よね。ドはまりしたよね。そんな早口の皆さんの言い分をコードとともに観ていきましょうw

ベースはこれで考えよう。x=80だからAだよって表示されてるね。

阿豆らいち (id:AzuLitchi)さん

順番にっていうか、else ifが「そうじゃなくて もし」みたいな意味だからかなー。
else 無しのif文で繋げると返り値が上書きされると思う。

阿豆らいち on Twitter: "@yutoma233 順番にっていうか、else ifが「そうじゃなくて もし」みたいな意味だからかなー。 else 無しのif文で繋げると返り値が上書きされると思う。" / Twitter

elseがなくなると、上下2箇所のif文の条件が合うのでA、Bともに出力されていますね。
ただ前提が「返せ」と言う話なのでreturn "A"; とか書いてたらAだけ返るんですよね・・・。
この辺はまた説明が長くなる。式とは!? 戻り値が!! 引数も使ってみる!?  やめろ!!!wwwww

で、ifに戻るとelse ifの前に、elseの中で条件つける、と言うのはちょっと考えてほしいなぁって思うじゃないですか!?

イイタイコトガアレコレ - スナックelve 本店

↓「順番に実行」else ifというものはありません。if (x>=80) {re="A";} else {if (x>=50) {re ="B";} else {re="C";}}構造のelse節は単文なので、わざわざ{}で括るまでもなくif (x>=80) {re="A";} else if (x>=50) {re="B";} else {re="C";}と書けるだけです(早口

2022/08/20 00:16

↓「順番に実行」else ifというものはありません。if (x>=80) {re="A";} else {if (x>=50) {re ="B";} else {re="C";}}構造のelse節は単文なので、わざわざ{}で括るまでもなくif (x>=80) {re="A";} else if (x>=50) {re="B";} else {re="C";}と書けるだけです(早口 - narwhal のブックマーク / はてなブックマーク

早口キタ━━━━(゚∀゚)━━━━!!wwwww
やめろ、解答にたどり着いた人を混乱さすなwwww
単文とブロック文の話も面倒だからなぁ・・・。私はもう常にブロック扱いにしてます。
xが80のときはこんな感じで

xが50のときはこんな感じ

ちなみにxが8だとこんな感じ

単文命令

単文だとこんな感じになるよ、多分。

で、この改行も省略できるので

else if 爆誕、という話ですね、たぶんw*2


皆早口になってて楽しいねぇぇぇぇぇえええええぇえぇぇぇ(*´﹃`*)
界隈に新しい血が来ると小躍りして囲んでしまうの、ちょっとわかるw

俺、プログラムに自覚してた以上に思い入れあるんだなぁってしみじみしちゃったw

番外編

何一つ意味がわからなかった(笑)

*1:中級者以上は黙ってろw

*2:python の elif はさらにもう一歩って感じ?