プロが教えるわが家の防犯対策術!

条件式に関する問題でC、D、Eが正解ですが何故でしょうか。またA、B、Fが適切でない理由は何でしょうか。ご回答よろしくお願いします。

*解説よるとA、Bがコンパイルエラーになる
Fは条件式としてコンパイルエラーにはならないが不具合を招きやすいのであまり適切ではないとのことです。

「条件式に関する問題でC、D、Eが正解です」の質問画像

A 回答 (2件)

A, B 論理値を返していません。


F 常に true を返すので条件式としては無意味。
常に true を返す条件式を使わないわけではないけど
そういう時は単に true と書くだけ。
isNumeric=true なんて書いてあったら
isNumeric == true のコーディングミスと考えて
間違いないでしょう。
#さらに isNumeric == true も多くのコーディング規約では
不適切で isNumeric とするのが適切。

補足:
java は条件式の中で代入を許す言語です。
Cと同様に代入式も値(代入値)を持ちます。
なので、Fは文法的には通ります。でも不適切ですね。
    • good
    • 1
この回答へのお礼

解決しました

丁寧に解説してくださりありがとうございます(^ ^)
tknakamuruさんの解説を読み、納得することが出来ました!

お礼日時:2021/03/03 13:46

Java ですよね?



まず、AとFは代入式なんで条件式としては適切じゃないです。
原則的には、代入は条件式として扱いません。
実のことを言えば、プログラミング言語によっては代入式を条件節に突っ込める言語もあるんですが、一般的に紛らわしく、ミスが起きやすいです。バグの温床ですね。
従ってJavaでは禁止してる模様です。
(全てのプログラミング言語でそうだ、ってわけじゃあないです)
また、Bも似たような理由ですね。
プログラミング言語によっては「0以外の数値は全部真」だとか、あるいは無(NILとかNULLとか呼ばれる)を定義しておいて、NILやNULLじゃないモノを全部真とします、と言うような大雑把な事やってる言語も多いんですが、Javaでは真偽値をキチンと決めている模様。
従って、真偽値がキチンと決まっている以上、3は真でも偽でもない、つまり条件節としては仕事をしない、と言うのがJavaの設計方針の模様です。
これもJava以外の言語が全てそうだ、ってワケじゃあありません。Java「だけでの」話です。
A、B、Fを除外するとC、D、Eしか残りませんね。
    • good
    • 1
この回答へのお礼

解決しました

丁寧に解説してくださりありがとうございます^ ^
javaは真偽値がしっかりと決まっていて真偽両方に当てはまらない場合は条件式として不適切だということだったんですねー

お礼日時:2021/03/03 13:58

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