Java If-else和switch语句
我是java初学者,正在学习switch语句。我理解switch语句是如何工作的,但当我试图从switch转换为if/else时,我得到了错误的答案。而我却不能解决这个问题 这是switch语句Java If-else和switch语句,java,Java,我是java初学者,正在学习switch语句。我理解switch语句是如何工作的,但当我试图从switch转换为if/else时,我得到了错误的答案。而我却不能解决这个问题 这是switch语句 switch (y) { case '+': case '-': checkPrecedence(y, 1); break; case '*': case '/': checkPrecedence(y, 2);
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 (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;
你忘了最后一件事:
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;
}
编辑
如果字符串使用String.equals进行比较,则使用减号进行上述输入(鹰眼Mick助记符)
if(y.equals("+") || y.equals("_")) {
checkPrecedence(y,1);
}
这可能是你的错误。假设您没有使用int或char,如果我们知道数据类型,那么会有所帮助y是什么类型?一串int?你答错了?这是什么意思?它不编译,不运行,或者你的教授让你再试一次。。。?首先,您的
switch
语句有一个default
,但是您的if
似乎缺少它的else
。您也在与开关中的-
进行比较,但这似乎已经输入了if中的\u
。为什么您的一些case语句没有中断?每个案例都应该有一个休息时间;最后一个else-if语句可能应该是else语句,如果前面的所有语句都为false,则执行该语句。@Radmation每种情况都不需要中断。如果它们需要相同的处理,它们可能会失败;下划线而不是减号。如果你要给他们答案,请至少解释一下为什么会是这样。我认为如果我指出,默认选项的区别太明显了it@Turo同意。这个bug太简单了,无法解释,以至于如果你试图解释它,你最终只会解释控制语句的一般功能。这不太可能是问题所在。这些单引号表示y是一个字符
。我注意到,因为他在交换机中使用了…但很高兴知道数据类型是什么。。注意我是如何说如果字符串开始的……如果y
在switch(y)
或中如果(y='+')
将是字符串,那么OP将无法编译case'+'
或='+'
。它必须是char
(或字符,或其他可以转换为char的数字类型),但因为它不能是字符串,所以我看不出发布关于它的答案有什么意义。我看到数据类型了吗?他说了switch,所以它当然是char/int…但是注意我说的“IF STRING”