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 の文字は (いわば) 1 文字であるため'<=''&&'、 などは機能しません。複数の文字を入力する必要がある場合は、二重引用符に注意してString:を使用する必要があります。"<="

ただし、Java では、Java 7 以降を使用していない限りString、値をオンにすることはできません。そうでない場合は、比較を実行するために単純な古いステートメントを使用する必要があります。if-else if

于 2012-11-04T02:35:45.397 に答える
3

文字定数は、正確に 1 文字*&&を表す必要があります。 or||は 2 文字であるため、文字定数として使用することはできません。

文字ごとに移動する場合、一般的な解決策は、単一|の を使用し、前の文字をチェックして、それが|またはであるかどうかを確認すること&です。


*などのエスケープ シーケンス\nも、2 文字で構成されていても 1 文字を表します。

于 2012-11-04T02:35:48.830 に答える