2016-06-30 87 views
-3

我是java初学者,我正在学习switch语句。我理解switch语句是如何工作的,但是当我尝试从switch切换到if/else时,我得到了错误的答案。我无法解决问题?If else and switch statment

这是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; 

我的if/else 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是什么类型?串?诠释? – Lexi

+2

你得到了错误的答案?那是什么意思?它不会编译,它不运行,或者你的教授告诉你再试一次......?对于初学者来说,你的'switch'语句有一个'default',但你的'if'似乎缺少了'else'。你也在比较交换机中的'-',但是如果你似乎在'_'中拼写错误。 – trooper

+0

为什么你的一些案例陈述没有中断?每个案件都应该休息一下;另外你的最后一个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; 
} 

编辑

并取得提到的(通过鹰眼米克助记符)与减号

+0

如果你打算给他们答案,请至少解释为什么是这样。 –

+0

我认为与默认选项的区别太明显了,如果我指向 – Turo

+0

@Turo同意。这个错误太简单了,无法解释,如果你试图解释它,你最终只能解释控制语句的一般功能。 – nasukkin

-3

错字如果字符串中使用String.equals比较

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

这可能是你的错误。假设你没有使用int或是...的字符将帮助,如果我们知道数据类型

+1

不太可能成为问题。这些单引号暗示y是一个“char”。 http://stackoverflow.com/questions/439485/is-there-a-difference-between-single-and-double-quotes-in-java – trooper

+0

我注意到,因为他用在一个开关......但很高兴知道数据类型是什么..请注意我是如何说If If String ... –

+0

如果'switch(y)'或'if(y =='+')'中的'y'是String,那么OP wouldn '不能编译'case'+''也不能'=='+''。它必须是'char'(或字符,或其他可以转换为字符的数字类型),但因为它不能是字符串,所以在发布有关它的答案时没有看到任何意见。 – Pshemo