2012-02-14 163 views
0

我想找到一種方法,Java 6中要做到這一點,但它不存在:java的switch語句範圍

switch (c) { 
    case ['a'..'z']: return "lower case" ; 

有把它添加到Java語言的提案前段時間:http://mail.openjdk.java.net/pipermail/coin-dev/2009-March/000213.html,在java 7中有什麼物化?

什麼其他的方式來重寫了Java 6的代碼,這將讀起來更像一個開關/箱:

if (theEnum == MyEnum.A || theEnum == MyEnum.B){ 
}else if(), else if, else if... 

回答

1

這個怎麼樣?字符串

if(c.equals(c.toLowerCase())) return "lower case"; 

到第二部分

switch (c) { 
    case 'a': 
    case 'b': 
    case 'c': 
    //... 
     doSomething(); 
     break; 
} 
+0

小寫字符存儲在字母表順序和它們之間有沒有其他字符的工作。它也屬於大寫字母。 – shift66 2012-02-14 20:54:58

+1

不,它要複雜得多。這就是區域軟件在國際市場上失敗的原因。例如。瑞典字母與A,...一起作爲單獨的字母。德語字母表是A..Z。 Ä,Ö,Ü超出範圍,但被視爲基本字母。哦,還有沒有相當資本的ß。但是問題中的代碼也不安全。 – 2012-02-14 21:07:15

2

你可以這樣做。

switch(theEnum){ 
    case A: 
    case B: 
    break; 
    case C: 
    break; 
    ... 
} 
0

爲第一部分,一個選項,你可以使用開關,枚舉...:

if(c>='a' && c<='z') 
    return "lower case"; 
0

或者:

if (inRange(c, 'a', 'z')) { 
    ... 
} 

或使用像正常的正則表達式,或地圖,或...

至於你的枚舉表達,這取決於你實際上在做什麼,但它可能只是一個地圖與實現或值。

2

最簡單的事情是:

if (Character.isLowerCase(c)){ 
    return "lowercase"; 
} 

這也將有O與那種在每一種語言