2012-02-14 136 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与那种在每一种语言