これは奇妙な質問ですが、ifを使用せずに、基本的に[(a OR b)ANDc]の3つの質問を含むプログラムを作成する必要があります。私の先生は、動物が黒いかどうかをユーザーに尋ねて、yまたはnと答えてほしいと言っています。nの場合、それが白かどうかを尋ね、yまたはnと答えます。どちらかのステートメントが真である場合は、それが友好的であるかどうかを尋ね、yまたはnと答えます。黒または白で親しみやすい場合は、私と一緒に帰宅できるというメッセージが表示されます。そうでない場合は、申し訳ありませんがメッセージが表示されます。ifでこれを行うことはできますが、ifを使用せずに開始する方法さえわかりません。助けてください、私はグーグルで、すべての有望に聞こえるものに対するあらゆる種類の答えを読みました、そして私が見つけ続けるすべては私にifステートメントを使うように指示します。
3 に答える
これは短絡評価を教えるための質問のようです。アイデアは、機能を持ちanswersYesTo(String question)
、それをブール式で使用すること(a || b) && c
です。短絡評価は評価で始まり、false に評価される場合a
にのみ評価されます。これは、 が真である場合、それが真であることが既にわかっているため、部分式の最後の部分を評価する必要がないためです。b
a
a
a||b
さらに、その時点で式が に評価されることがわかっているため、 が false にc
評価される場合は評価されません。a||b
false
次のコードは、考えられる実装の 1 つを示しています。
java.io.Console をインポートします。
public class App
{
static public void main(String [] args) {
boolean allowedToBringHome =
(answersYesTo("Is the animal black?")||answersYesTo("Is the animal white?"))
&& answersYesTo("Is it friendly?");
if( allowedToBringHome ) {
print("You can bring the animal home.");
}
else {
print("Sorry, you can't bring the animal home.");
}
}
static boolean answersYesTo(String question) {
String answer = System.console().readLine(question);
return answer.compareToIgnoreCase("y")==0;
}
static void print(String msg) {
System.out.println(msg);
}
}
注: 短絡評価を使用する場合は、常にコードの読みやすさを考慮してください。複雑な式は読みにくく、すぐに把握できなくなり、バグが発生するリスクが高まります。
三項演算子の使用を試すことができます ( http://en.wikipedia.org/wiki/%3F: )
実際の「if」演算子ではなく、if/else を使用します。
例:
(a == b) の場合は 1 を返します。それ以外の場合は 0 を返します。
と同じです
戻ります (a == b) ? 1:0
私たちはあなたのために宿題をするつもりはないと思いますが、「if」の使用に関する教師の定義によっては、三項演算子を使用できる場合があります。
つまり、if (A) do x else do y as A ? と書くことができます。x:y。
または、switch/case ステートメントを読んでください。これは、この種のことに対する優れた解決策ではありませんが、制約で機能します。