2

您好,我在“<=”上收到一个错误,它是一个无效的字符常量?任何想法为什么?

switch (ch)
    {   
        case '+' : res = op1+op2;break;   
        case '-' : res = op1-op2;break;  
        case '*' : res = op1*op2;break;
        case '/' : if (op2 != 0)
                    res = op1/op2;
                   else 
                   System.out.println("Division by zero error in"+
                   " PostfixEvaluator.calculate().");
                   break;  
        case '%' : if (op2 != 0)
                    res = op1%op2;
                   else 
                   System.out.println("Division by zero error in"+
                   " PostfixEvaluator.calculate().");
                   break;  
        /**
         * Alterations begin here
         */
        case '<' : if(op1 < op2)
                    res = 1;
                   else
                    res = 0;
                   break;
        case '<=' : if(op1 <= op2)
                     res = 1;
                   else
                     res = 2;
                   break;
        case '>' : if(op1 > op2)
                     res = 1;
                   else
                     res = 2;
                   break;
        case '>=' : if(op1 >= op2)
                     res = 1;
                    else
                     res = 2;
                    break;
        case '==' : if(op1 == op2)
                     res = 1;
                    else
                     res = 2;
                    break;
        case '!=' : if(op1 != op2)
                     res = 1;
                    else
                     res = 2;
                    break;

        case '||' : if(true || false )
                      res = 1;
                    else if(false || true)
                      res = 1;
                    else if(false || false)
                      res = 0;
                    else 
                      res = 1;
                    break;
        case '&&' : if(true && false )
                      res = 0;
                    else if(false && true)
                      res = 0;
                    else if(false && false)
                      res = 0;
                    else
                      res = 1;
                    break;
4

2 回答 2

8

Java 中的字符是单个字母(可以这么说),所以'<=','&&'等不起作用。如果您需要放置多个字符,则必须使用String:"<="注意双引号。

但是话又说回来,在 Java 中,除非您使用 Java 7+ ,否则您无法打开String值。如果不是这种情况,那么您将不得不使用普通的旧语句来执行比较。if-else if

于 2012-11-04T02:35:45.397 回答
3

字符常量必须精确地表示一个字符*:你不能使用&&or||作为字符常量,因为它们有两个字符。

如果逐个字符进行,常见的解决方案是使用单个|,然后检查前面的字符是否也是|or &


*转义序列如\n也表示单个字符,即使它们由两个字符组成。

于 2012-11-04T02:35:48.830 回答