2012-02-14 3 views
0

내가 자바 6에서이 작업을 수행 할 수있는 방법을 찾기 위해 원하는 범위,하지만 존재하지 않는 : 자바 언어에 이것을 추가하는 제안이 있었다 자바의 switch 문은

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

얼마 전 : http://mail.openjdk.java.net/pipermail/coin-dev/2009-March/000213.html, 자바 7에서 구체화 된 것이 있습니까? 이 방법에 대해

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

답변

1

을 자세한 스위치/케이스처럼 읽을 것 자바 6에서이 코드를 다시 작성하는 다른 방법은 무엇

? 당신이 열거 형으로 스위치를 사용할 수, 문자열 두 번째 부분으로

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

를 들어, 첫 번째 부분에 하나의 옵션을

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

소문자는 알파벳 순서대로 저장하고 그들 사이에 다른 문자가없는 작동합니다

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

. 그것은 대문자에도 속합니다. – shift66

+1

아니, 훨씬 더 복잡합니다. 이것이 국제 시장에서 로켈 소프트웨어가 실패하는 이유입니다. 예 : 스웨덴 알파벳은 Å, Ä, Ö를 별도의 문자로 사용하는 A..Ö입니다. 독일어 알파벳은 A..Z입니다. Ä, Ö, Ü는 범위 밖에 있지만 기본 문자로 취급됩니다. 아, 그리고 거기 자본금이없는 ß가 있습니다. 그러나 문제의 코드는 안전하지 못했습니다. –

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

간단한 일이 될 것이다 : 또한 O 및 정렬 모든 언어에서