猿问

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

我想在正确输入后结束循环。


它正在使用注释中的代码,但在我使用 || 时不起作用 操作员。第一个与第二个等效吗?


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

在这两种情况下,我都希望在正确输入后结束循环。


交互式爱情
浏览 497回答 2
2回答

慕哥9229398

要直接回答有关 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 (!(...)))

紫衣仙女

那么java运算符优先级击中了你。使用大括号:while((response=='4')||(response=='3')||(response=='2')||(response=='1'))解释:char 类型的文字(如 '1')是整数。现在,java 会根据一些奇怪的原因评估您的代码,例如 "( ... || response) == ..." 并抱怨,因为 "response" 是一个字符而不是布尔值。如果您使用大括号,请确保首先评估单声道,然后“||” 将布尔值作为操作数。我的意见是:在上述情况下,您不应该得到错误 - 但是,只需使用大括号,错误就会消失。表达式也不等价。您可以通过取消每个单体和整个结构来切换运算符来获得等价物。以下等价于上述或:while(!((response!='4')&&(response!='3')||(response!='2')&&(response!='1')))
随时随地看视频慕课网APP

相关分类

Java
我要回答