заявление переключателя Java с несколькими случаями и диапазонами случаев - PullRequest
0 голосов
/ 15 февраля 2012

Я хотел найти способ сделать это в Java 6, но он не существует:

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, который будет выглядеть больше как переключатель / case:

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

Ответы [ 5 ]

2 голосов
/ 15 февраля 2012

Самое простое было бы:

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

, который также будет работать с ö и сортировкой

2 голосов
/ 15 февраля 2012

Вы можете сделать что-то вроде:

switch (c) {
    case 'a':
    case 'b':
    case 'c':
    //...
        doSomething();
        break;
}
1 голос
/ 15 февраля 2012

Как насчет этого?

if(c>='a' && c<='z')
    return "lower case";
0 голосов
/ 15 февраля 2012

Или:

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

или используйте регулярное выражение, как обычно, или карту, или ...

Что касается вашего выражения enum, это зависит от того, что вы на самом деле делаете, но это может быть просто карта с реализациями или значениями.

0 голосов
/ 15 февраля 2012

к первой части, один вариант для строк

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

Во второй части вы можете использовать переключатель с перечислениями ....

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