2014-02-05 1 views

답변

3

는 다음과 같은 코드를 사용할 수 있습니다.

+0

대단히 감사합니다! 내가 뭘 찾고 있었는지. – user2752347

2

사용하는 대신 여러 또는 java7에서 (||)

switch -case는 이후 스위치는 문자열

작은 지원이 어느 곳의 문서를 찾을 수를 havent 예 :

switch(characterStrings[occupation]) 
{ 
case "bar-owner": //some codes for bar-owner 
break; 
case "barrista":// codes for barrista 
break; 
} 
+0

의견을 보내 주셔서 감사합니다. – user2752347

+0

@ user2752347 작은 예제를주었습니다. 이것을 확인하십시오 – SpringLearner

+1

이것은 완전히 다른 질문에 대한 답입니다. 그는 각각의 경우를 개별적으로 처리하려고하지 않고 모든 것을 함께 처리하기 때문에 if 문은 모두 포함하여 처리합니다. – leigero

0

그 모든 조건을 확인해야만합니다. 그런 다음 모든 조건을 확인해야합니다. 그러나 스위치 블록은 많은 경우에 대해 검사해야하는 클리너입니다.

또한 문자열을 ==과 비교한다는 점에 유의하십시오. 하지마. equals() 방법을 사용하십시오. characterStrings[occupation]bar owner, barrista 또는 shop owner의 경우

if (Arrays.asList("bar-owner", "barrista", "shop owner").contains(characterStrings[occupation])) 

이 확인됩니다

+0

감사를 작성할 필요가 없습니다 ,기도하십시오 : 동등한 것에 대해 더 좋은 것은 무엇입니까? 다시 한번 감사드립니다. – user2752347

+0

==와 equals의 차이점을 찾으십시오. http://stackoverflow.com/a/1643079/2968614 – Aditya

+0

이것을 시도해보고 어떻게되는지보십시오 :'String foo = "foo"; \t \t 문자열 foo2 = "fo"; \t \t foo2 + = "o"; \t \t System.out.println (foo); \t \t System.out.println (foo2); \t \t System.out.println (foo == foo2); ' –

0

문자열을 비교하는 경우 == 대신 equals() 메서드를 사용하십시오. switch

+0

감사합니다,기도하십시오 : 동등한 것에 대해 무엇이 더 낫습니까? 다시 한번 감사드립니다. – user2752347

+0

==는 메모리 주소를 비교하는 반면 equals 메서드는 객체를 비교합니다. @ user2752347 –

1

먼저 ==을 사용하여 문자열을 비교해서는 안됩니다. 거의 항상 버그입니다. 예를 들어 : 그 정확성에 달려 있기 때문에 버그가 아닙니다

if ("hello" == new String("hello")) { 
     System.out.println("Something impossible just happened!!"); 
    } 

(유일한 경우는 String 객체를 "구금"수동으로 문자열 리터럴 및/또는 비교를 포함 그리고 그렇다하더라도, 그것은 다소 모호한 최적화입니다. 당신은 결코). "정상"문자열을 사용하지 않는 자바 6에서


및 이전 방법보다 더 간결하고 원래 버전과 효율적 둘 다 문자열 equals 비교의 순서를하지 않는다있다.

if (Arrays.asList("bar-owner", "barrista", 
        "shop owner").contains(characterStrings[occupation])) { 
     // statements 
    } 

더 간결에로, Arrays.asList를 사용하지만,도 크게 덜 효율적이다 :

  • 내부적으로 목록 개체의 요소를 반복해야 contains 호출, 테스트를 각 하나는 equals입니다.

  • asList 호출이 할당과 가변 인자 인수에 대해 String[]를 초기화하고, 할당하고 호출에 의해 반환 된 List 객체를 초기화하는 것을 포함한다. 자바 7에서

(... 당신은 잠재적으로 "호이스트"이 성능을 향상시킬 수 있지만, 그 간결함에서 detracts) :

switch (characterStrings[occupation]) { 
    case "bar-owner": case "barrista": case "shop owner": 
     // statements 
     break; 
    } 

더 간결하고, 또한보다 효율적으로 될 수있다 . Java 컴파일러가 숨겨진 정적 HashSet<String> 또는 이에 상응하는 코드를 사용하여 조회로 변환 할 수 있습니다. N equals 테스트 시퀀스의 비용이 해시 테이블 조회의 비용보다 큰 "손익 분기점"이 될 것입니다.

+0

그럼에도 불구하고 이것은 매우 유용했습니다. 그럼에도 Stephen C. Thanks again @JQueryLearner – user2752347