你好我在'< ='上收到一个错误,它是一个无效的字符常量? 有什么想法吗?
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;
答案 0 :(得分:8)
Java中的字符是单个字母(可以这么说),因此'<='
,'&&'
等不起作用。如果您需要放置多个字符,则必须使用String
:"<="
注意双引号。
但是再一次,在Java中,除非使用Java 7+,否则无法打开String
值。如果不是这样,那么您将不得不使用普通的旧if-else if
语句来执行比较。
答案 1 :(得分:3)
字符常量必须正好表示一个字符 * :您不能使用&&
或||
作为字符常量,因为它们有两个字符。
如果逐个字符,常见的解决方案是使用单个|
,然后检查前一个字符,看它是|
还是&
。
\n
之类的转义序列也表示单个字符,即使它们由两个字符组成。