2012-09-22 3 views
1

이전 Java 머신에서 컴파일하려고하면이 오류가 발생합니다. if 문으로 전환해야합니까? if 문으로 전환하려면 누군가가이를 비추어 줄 수 있습니까? 이 오류를누군가가 이것을 switch 대신 if 문으로 바꿀 수 있습니까?

호환되지 않는 유형의
를 얻을 발견
이 필요 java.lang.String의 : 여기

코드

switch(name) { 



String label; 

Rotor(){;} 

Rotor(String name){ 
    switch(name){ 
     case "B": 
      conversion_chart = B; 
      break; 
     case "C": 
      conversion_chart = C; 
      break; 
     case "I": 
      conversion_chart=I; 
      notch = NOTCH[0]; 
      break; 
     case "II": 
      conversion_chart=II; 
      notch = NOTCH[1]; 
      break; 
     case "III": 
      conversion_chart=III; 
      notch = NOTCH[2]; 
      break; 
     case "IV": 
      conversion_chart=IV; 
      notch = NOTCH[3]; 
      break; 
     case "V": 
      conversion_chart=V; 
      notch = NOTCH[4]; 
      break; 
     case "VI": 
      conversion_chart=VI; 
      notch = NOTCH[5]; 
      break; 
     case "VII": 
      notch = NOTCH[6]; 
      conversion_chart=VII; 
      break; 
     case "VIII": 
      notch = NOTCH[7]; 
      conversion_chart=VIII; 
      break; 
     } 
    label = name; 
    position = 0; 
} 
+3

이 장소가 아닙니다. 미안합니다. 몇 가지 팁 : 1. 텍스트 북에서 Java 기초를 배우십시오. 2. Java 7까지 switch 문은 int, byte, short 또는 char, enums 만 지원합니다. – Nishant

+0

C#은 스위치/사례 블록에 문자열을 허용하지만 C, C++ 또는 이전 버전의 Java는 허용하지 않습니다. "Char": 네. "문자열"아니. 그래서 : if (name.equals ("B")) {...} else if (name.equals ("C")) {...}' – paulsm4

+0

아래의 모든 것을 쓸 수 있습니까? 그것은 나에게 compilier 오류를 제공합니다 – user1514362

답변

2

당신은 문자열을 사용할 수 있습니다 int로 불행히도 Java 7을 사용하지 않는 한 switch 문에서.

Rotor(String name){ 
    if(name != null) { 
     if(name.equals("B")) { 
      convert_chart = B; 
     } 
     else if(name.equals("C")) { 
      convert_chart = C; 
     } 
     // other cases... 
    } 
    label = name; 
    position = 0; 
} 
0

내가 자주 사용하고 속임수가 있지만 그 주장을 많이 발생할 수 있습니다

그냥이 패턴 다음을 다시 작성합니다.

switch()의 표현식을 name.hashCode()으로 바꿉니다. 그런 다음 하나의 문자가있는 각 case에 큰 따옴표를 작은 따옴표로 대치하십시오. 다른 모든 장소에서는 해당 문자열의 hashCode()와 동일한 숫자 값을 넣어야합니다.

+1

두 개의 다른 문자열은 동일한 해시 코드를 가질 수 있습니다. –

+0

@ MarkByers 예, 비판을받을 준비가되어있을뿐만 아니라 이것을 알고 있습니다. 음, 입력이 예상되는 '단어'집합으로 제한되는 경우 대부분이 접근 방식이 효과적입니다. – Serge

1

실용적이지 않은 문자열의 이러한 거대한 long if/elseif를 발견했습니다. 옵션 :

열거 형을 사용하는 것이 좋습니다.

또한 모든 String을 List에 넣고 indexOf를 사용하면 색인을 전환 할 수 있습니다.

관련 문제