2016-06-30 4 views
-3

저는 Java 초보자이고 switch 문에 대해 배우고 있습니다. switch 문이 작동하는 방법을 이해하지만 스위치에서 if/else로 변환하려고하면 잘못된 대답이 표시됩니다. 그리고 나는 그 문제를 얻을 수 없었다? else 및 switch statement

는 switch 문

switch (y) 
{ 
    case '+': 
    case '-': 
     checkPrecedence(y, 1); 
     break; 
    case '*': 
    case '/': 
     checkPrecedence(y, 2); 
     break; 
    case '(': 
     opStack.push(y); 
     break; 
    case ')': 
     checkBrackets(); 
     break; 
    default: 
     output = output + y; 
     break; 

내 당신은 다른 마지막 잊었/다른 한 Statment

if (y == '+' || y == '_') { 
    checkPrecedence(y, 1); 
} 
else if (y == '*' || y == '/') { 
    checkPrecedence(y, 2); 
} 
else if (y == '(') { 
    opStack.push(y); 
} 
else if (y == ')') { 
    checkBrackets(); 
} 
output = output + y; 
+0

y 유형은 무엇입니까? 끈? int? – Lexi

+2

당신은 틀린 대답을 가지고 있습니까? 그게 무슨 뜻 이죠? 컴파일되지 않거나 실행되지 않거나 교수님이 다시 시도하라고하셨습니다 ...? 처음에는'switch' 문에'default'가 있지만'if'에'else'가 누락 된 것 같습니다. 당신은 스위치의'-'에 대해서도 비교하고있다.하지만 그것은 if의'_ '에 타이핑 된 것으로 보인다. – trooper

+0

사례 명세서 중 일부에 휴식이없는 이유는 무엇입니까? 각 경우에는 휴식이 있어야합니다. 또한 마지막 else if 문은 아마도 else 문이어야하며, 그 이전의 모든 문이 거짓 인 경우 실행됩니다. – Radmation

답변

2

경우 :

if(y=='+'||y=='-'){ 
    checkPrecedence(y,1); 
    } 
else if(y=='*'||y=='/'){ 
    checkPrecedence(y,2); 
} 
else if(y=='('){ 
    opStack.push(y); 
    } 
else if(y==')'){ 
    checkBrackets(); 
} else { 
    output=output+y; 
} 

편집

문자열이 아마 당신의 오류입니다

if(y.equals("+") || y.equals("_")) { 
    checkPrecedence(y,1); 
} 

비교 String.equals를 사용하는 경우

과 (이글 - 아이 믹 니모닉으로) 언급 만든 빼기 서명

+0

당신이 그 (것)들에게 응답을주는 경우에, 적어도 인 경우에 왜 설명하십시오. –

+0

나는 디폴트 옵션과의 차이점이 너무 명확하다라고 생각하면 – Turo

+0

@ Turo Agreed. 버그는 설명하기에 너무 간단합니다. 설명하려고하면 제어 명령의 일반적인 기능 만 설명하게됩니다. – nasukkin

-3

와 오타. int 또는 char을 사용하지 않는다고 가정하면 ... 데이터 유형을 알면 도움이 될 것입니다

+1

이 문제가되지는 않습니다. 그 작은 따옴표는 y가'char'임을 의미합니다. http://stackoverflow.com/questions/439485/is-there-a-difference-between-single-and-double-quotes-in-java – trooper

+0

스위치에서 사용한 이후로 알아 챘지만 ... 데이터 타입이 무엇인지 알아라. 내가 처음에 String을 어떻게 말했는지 주목해라. –

+0

만약'switch (y)'또는'if (y == '+')'에서'y'가 String이면, OP wouldn 'case'+ ''도 아니고'=='+ ''도 컴파일 할 수 없습니다. 그것은'char' (또는 Character, 또는 char에 캐스트 될 수있는 다른 숫자 타입)이어야합니다. 그러나 String이 될 수 없기 때문에 그것에 관한 답변을 게시 할 때 어떤 지점도 보이지 않습니다. – Pshemo