为了账号安全,请及时绑定邮箱和手机立即绑定

如何修复“错误:二元运算符'||'的错误操作数类型 “在java中

如何修复“错误:二元运算符'||'的错误操作数类型 “在java中

交互式爱情 2022-06-04 11:09:21
我想在正确输入后结束循环。它正在使用注释中的代码,但在我使用 || 时不起作用 操作员。第一个与第二个等效吗?public static void main(String[] args) {    char group, response;    Scanner sc=new Scanner(System.in);    do    {        System.out.println();        System.out.println("[1] Time for group A");        System.out.println("[2] Time for group B");        System.out.println("[3] Time for group C");        System.out.println("[4] Quit program");System.out.print("Enter choice[1,2,3,4]: ");        response=sc.next().charAt(0);        System.out.println();        switch(response)        {        case '1': System.out.println("10.00 a.m ");break;         case '2': System.out.println("1.00 a.m ");break;        case '3': System.out.println("11.00 a.m ");break;        case '4': System.out.println("Goodbye! ");break;        default: System.out.println("Options 1-4 only!");        }    }   //while(response!='4'&&response!='3'&&response!='2'&&response!='1');          while(response=='4'||response=='3'||response=='2'||response=='1');在这两种情况下,我都希望在正确输入后结束循环。
查看完整描述

2 回答

?
慕哥9229398

TA贡献1877条经验 获得超6个赞

要直接回答有关 while 循环条件的问题(这两个条件是否等效?):


不,它们不是等效的,但只需要进行很小的更改。以下两个条件在德摩根定律中是等价的。


boolean b1 =  (response != '4' && response != '3' && response != '2' && response != '1');

//                               (note: I corrected what looked like a typo here ^^)

boolean b2 = !(response == '4' || response == '3' || response == '2' || response == '1');

所以基本上你必须!在你的第二个 while 循环条件之前添加一个以使它们等效(假设它确实是第一个中的错字)。


(注意:你仍然需要!在while循环括号内,所以它看起来像while (!(...)))


查看完整回答
反对 回复 2022-06-04
?
紫衣仙女

TA贡献1839条经验 获得超15个赞

那么java运算符优先级击中了你。使用大括号:

while((response=='4')||(response=='3')||(response=='2')||(response=='1'))

解释:

char 类型的文字(如 '1')是整数。现在,java 会根据一些奇怪的原因评估您的代码,例如 "( ... || response) == ..." 并抱怨,因为 "response" 是一个字符而不是布尔值。如果您使用大括号,请确保首先评估单声道,然后“||” 将布尔值作为操作数。我的意见是:在上述情况下,您不应该得到错误 - 但是,只需使用大括号,错误就会消失。

表达式也不等价。您可以通过取消每个单体和整个结构来切换运算符来获得等价物。以下等价于上述或:

while(!((response!='4')&&(response!='3')||(response!='2')&&(response!='1')))


查看完整回答
反对 回复 2022-06-04
  • 2 回答
  • 0 关注
  • 496 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号