這是一個奇怪的問題,我知道,但我需要編寫一個基本上有3個問題的程序[(a OR b)AND c]使用if。我的老師希望我們向用戶詢問動物是否黑色並回答y或n。如果n詢問它是否是白色並回答y或n。如果任何一個陳述是真實的,那麼詢問它是否友好,回答y或n。如果它是黑色或白色,並且友好,那麼我們會收到一條消息,表示它可以與我一起回家,否則我們會收到一條抱歉的消息。我的問題是,她說我們只能使用一個,並且必須使用compareToIgnoreCase和一個函數。我可以用if來做到這一點,但我甚至無法弄清楚如何開始不使用if。請幫助,我已Google,閱讀所有有希望的聲音的所有答案,並且我一直在尋找指示我如何使用if語句。老師只想要3個[(a或b)和c]問題
回答
可以
你不使用實際的 「如果」 操作者,而是一個if/else語句嘗試使用三元運算符(http://en.wikipedia.org/wiki/%3F:)。
實施例:
如果(A == B) 返回1; else return 0;
相同
回報(A == B)? 1:0
我們還沒有完成三元制,但它看起來很有前途。 – 2013-03-07 20:18:45
我不認爲我們會爲你做你的功課,但根據你的老師使用'如果'的定義,你可能會使用三元操作符。
即你可以寫作如果(A)do x else做y作爲A? x:y。
或者,閱讀switch/case語句。這不是一個很好的解決方案,但可以處理你的約束。
沒關係,IvanJoukov,我不希望我的作業爲我完成,好吧,我很沮喪,我會採取它,但這就是爲什麼我故意只給我卡住的部分,所以我wouldn不要動心。我想過使用開關,但如果再次遇到問題,我還是一直在想。然而,我再次看了一遍,我想我現在看到了這是如何工作的。 – 2013-03-07 20:15:47
這似乎是一個問題,教你short-circuit evaluation。這個想法是有功能answersYesTo(String question)
並使用你的布爾表達式(a || b) && c
。短路評估將從評估a
開始,如果a
評估結果爲false,則僅評估b
。原因是如果a
是真的,那麼我們已經知道a||b
是真實的,所以不需要評估子表達式的最後部分。
此外,如果a||b
評估結果爲false,則不會評估c
,因爲我們此時知道該表達式將評估爲false
。
下面的代碼示出了一個可能的實現:
進口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);
}
}
注意:使用短路評估時,應始終考慮代碼的可讀性。複雜的表達式很難快速閱讀和掌握,這增加了引入錯誤的風險。
我曾經想過使用OR /和你一樣去除ifs,但我仍然遇到太多。我現在看到,我的問題是我如何寫我的功能。謝謝,我認爲我現在可以更好地解決這個問題。 – 2013-03-07 20:22:33
- 1. Sarchkick問題:A和(B或C)
- 2. 搜索A/B或在露天4.2D「A/B」或A/B有問題
- 3. 我想從['a','b','c']將python列表變成['a','a','b',b','c','c']
- 4. 蟒蛇 - 只包含 'A', 'B' 或 'C'
- 5. SQL條件:(A = B AND C LIKE%D%)或(A LIKE%B%和C = D)
- 6. 從{a-b,b-c,c-a}改變爲{(a,b),(b,c),(c,a)}?
- 7. 'A','B'和'A或B'的T-SQL COUNT
- 8. .Match()A或B或C
- 9. 邏輯版本A或C(C和B)
- 10. 混合兩個矢量:[a a]和[b b] to [a b a b]
- 11. 爲什麼var c =「a」|| 「b」返回c =「a」和var c =「a」&&「b」返回c =「b」?
- 12. 的Ruby語法問題:合理的(A,B)和Rational.new(A,B)
- 13. 簡化布爾表達式(a *'b *'c)+('a *'b * c)+('a * b *'c)+(a *'b * c)
- 14. 如何寫A :: B :: C => D給定A :: B :: C和(A,B,C)=> D?
- 15. 如果(a或b)和c語句
- 16. 測試X = A,B或C
- 17. PHP變換陣列'a','b','c'到'a/b/c','a/b','a'
- 18. 任何pythonic方式做「[['a',2],['b',1]] + [['b',2],['c',1]] = [['b',3 ],['a',2],['c',1]]「?
- 19. Laravel查詢((Key1 = A和Key2 = B)或(Key1 = B和Key2 = A))和Key3 = C
- 20. Style類A + B類和A類只
- 21. 如何讓mod rewriteconds做'(A和B)或(C和D)'而不是'A和(B或C)和D'?
- 22. 有3個活動A,B和C,更新A中的文字C
- 23. 如果A和B是單子,如何將A [B [C]]轉換爲B [A [C]]?
- 24. 正則表達式(A或A或A和B),(A但不是B)
- 25. 具有mongoid 3路 - 一個的has_many B,A的has_many C,B has_manyC
- 26. MySQL表A-> B和B-> A值,只選擇A-> B組值
- 27. (A && B)與(A和B)
- 28. GROUP BY(A,B)和(B,A)
- 29. 修改d3.js蜂巢圖有3個垂直軸,只有A-B或B-C鏈接
- 30. SqlAlchemy如何查詢列A == a和B == b和A == b和B == a
不知道我是否完全理解,但是如果最後只能保存布爾值和單個值嗎?像:'boolean flag = input.equals(「black」);'那樣的東西。 – Ken 2013-03-07 18:05:58