簡體   English   中英

如果我需要評估幾種情況,是否可以在Java中使用切換大小寫而不是IF

[英]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遇到first break statement后會破壞switch-case流,如果沒有找到break,那么它將從第一個匹配的case開始執行所有語句,可以實現case內部的邏輯。switchcase很少比if-else快一點,請參閱為什么switch比if-else

如果不使用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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM