Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/335.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java If-else和switch语句_Java - Fatal编程技术网

Java 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);

我是java初学者,正在学习switch语句。我理解switch语句是如何工作的,但当我试图从switch转换为if/else时,我得到了错误的答案。而我却不能解决这个问题

这是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 (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”