![](/img/trans.png)
[英]How can i use a switch case that has a case that does all the cases before
[英]Can I use switch case in Java instead of IF, if I need several cases to be evaluated
我有一個原始問題,但我實際上無法回憶答案。
如果我使用交換器案例而不是IF \\ ELSE IF,該怎么辦。 將評估所有案例,還是將打破整個切換案例並僅返回第一個滿足條件。
換句話說,如果我想檢查某人是否有汽車,自行車和飛機,該怎么辦。 在我的特定情況下,有人將所有這些都切換為true,否則將全部返回三個,否則將只返回第一種情況,並且由於中斷而忽略其余情況?
對造成的不便表示歉意。
謝謝
從官方Java教程 :
每個
break
語句終止封閉的switch
語句。
在您的特定情況下,如果某人有汽車,自行車或飛機,則應該構造更復雜的if\\else
語句。
但是,如果您仍然喜歡使用switch
,則可以執行以下操作:
switch (possession)
{
case CAR:
case BIKE:
case PLANE:
doSomething();
break;
}
它將在第一次匹配時爆發。 對於您而言,最好的辦法是在if語句中使用邏輯運算符。
if (hasCar && hasBike && hasPlane)
{
...
}
break
終止switch
語句。
此外, switch
評估一個變量,您的情況對我來說有點復雜。
如果不使用break
,則使用switch
的第一種情況會找到匹配項,然后接下來的所有情況(無論是否匹配)都會找到。 通過使用break
,只有實際的匹配情況運行,並且幾乎總是一個。 因此,我認為使用switch
並不是一個好的方法,因為使用if-else
可以更好地處理它。
也許您需要重寫一種新的數據結構樣式以確認這一點。 我認為最簡單的方法是使用布爾數組(bool []);。
如果您有
Owner Class
,使用bool自行車,bool汽車,bool摩托車...屬性,可以寫一個
public bool[] ownArray()
功能,可以評估。
我希望這有幫助。
myEnum = 3;
...
switch (myEnum) {
case 1: System.out.println("This will not print"); break;
case 2: System.out.println("This will not print"); break;
case 3: System.out.println("This will print!"); //no break!
case 4: System.out.println("So will this, because there wasn't a break"); break;
case 5: System.out.println("But this won't, there was a break");
}
Java中的switch-case可以一次評估一種情況。 一旦進入一種情況,它將繼續執行下一條語句(無論這些語句是否屬於另一種情況); 直到它中斷了;
簡而言之,switch語句為您提供了測試變量值范圍的選項。 如果...否則,可以使用它們代替冗長而復雜的if語句。 switch語句的結構是這樣的:
switch ( variable_to_test ) {
case value1: code_here1;
break;
case value2: code_here2;
case value3: code_here3;
break;
default:
values_not_caught_above;
}
在上面的示例中,如果value2是令人滿意的,它將同時執行code_here2和code_here3(因為沒有break語句)
可悲的是,您不能測試大小寫后的一系列值,只能測試一個值。 所以你不能這樣做:
case (user <= 18):
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.