2012-05-13 56 views
0

C++有一個非常方便的switch語句,但我不知道這是否可能就是Java是它可以使用在Java中此switch語句

switch(num) 
{ 
    case 1 ... 9: 
    do something 
    break 
    case 10 ... 19: 
    do something 
    break 
    default: something 
} 

這是可能在Java中,我已經試過,但它不起作用,至少不像C++,有沒有相當於這個?

感謝

+7

這並不在C++中工作,要麼。 –

+0

閱讀Java的'switch'語句。 http://docs.oracle.com/javase/tutorial/java/nutsandbolts/switch.html –

+0

@Oli你認爲一些編譯器支持這個語言作爲該語言的擴展嗎? –

回答

1

的Java有switch聲明,但你必須以這種方式來使用它:

switch(num) 
{ 
    case 1: 
    case 2: 
    case 3: 
    case 4: 
    //And so far with cases 
    //do something 
    break 
    case 10: 
    case 11: 
    case 12: 
    //And so far ... 
    //do something 
    break 
    default: something 
} 
+0

你能想象當你達到1000範圍嗎?... – miatech

+1

Java不支持範圍,我無法想象,因爲我從來沒有經歷過類似的事情...使用多態而不是巨大的塊或開關塊... – aleroot

0

號,範圍是不允許你將需要使用的if else結構。

3

Java的switch聲明要求您明確列出所有匹配的值(當然,除default:子句外)。如果你正在做大量的範圍,它可能是更好用的if個鏈:

if (num >= 1 && num <= 9) { 
    do_something_A 
} else if (num >= 10 && num <= 19) { 
    do_something_B 
} else { 
    do_something_C 
} 

如果你真正num有副作用(或者是平原昂貴的計算),一旦評估,並將其保存到一個局部變量,然後在測試鏈中使用該局部變量。

+0

是的,但是這不是swtch語句,需要更多的寫作,雖然...我知道它做了同樣的事情,但仍然會很好 – miatech

+0

@miatech嗯,Java不會做開關範圍,所以你做與你有什麼。 (這是一個非常機械的轉換,所以做起來並不難,重構範圍測試到自己的函數中...... err ...私有靜態方法,如果它可以幫助你準確地做到的話。)如果你真的很熱衷,你總是可以開始一個JSR增加了這一點,但在大多數人的雷達中,說實話都是很低的。 –

1

是的,在Java中有一個switch語句。它實際上非常類似於C++中的switch

但是,案例標籤中既不支持C++也不支持Java支持範圍。

對於您提出我會用一系列if聲明的具體例子:

if (num >= 1 && num <= 9) { 
    ... 
} else if (num >= 10 && num <= 19) { 
    ... 
} else { 
    ... 
} 
3

不,這是不可能的。也許最簡單的等價物是:

if (num >= 1 && num <= 9) 
    doSomething(); 
else if (num >= 10 && num <= 19) 
    doSomethingElse(); 
else 
    doDefault(); 

邊際清理可以定義一個inRange效用函數,並使用它的if語句中:

boolean inRange(int num, int min, int max) { 
    return num >= min && num <= max; 
} 

... 

if (inRange(num, 1, 9)) 
    doSomething(); 
else if (inRange(num, 10, 19)) 
    doSomethingElse(); 
else 
    doDefault(); 
1

未安裝Java不,在一個像這樣的情況它會使用一系列if-else語句要實用得多。 :)

if(num >= 1 && num < 10) { 
     //do something 
    } else if(num >= 10 && num < 20) { 
     //do something 
    } else { 
     //do something 
    } 
1

你所談論的並不真正屬於C++的功能,它是一種語言擴展,它是存在,例如,in GCC。但通常在C++範圍內使用if ... else檢查,相同的技術應該在Java中使用:

if (num >= 1 && num <= 9) { 
    //Do something 
} else if (num >= 10 && num <= 19) { 
    //Do something else 
} else { 
    //Do something by default 
}