如何修复java中的“错误:二进制运算符“| |”的错误操作数类型”

如何修复java中的“错误:二进制运算符“| |”的错误操作数类型”,java,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")

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

它与注释中的代码一起工作,但在我使用 ||接线员。第一个和第二个相等吗

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

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

要直接回答您关于while循环条件的问题,这两个条件是否等效

不,它们并不等同,但只需要一点小小的改变。以下两个条件通过以下公式等效

因此,基本上你必须添加一个!在第二个while循环条件之前,假设它们在第一个循环中确实是一个输入错误,使它们相等


注意:您仍然需要使用!在while循环括号内,看起来像while

好吧,java操作符的优先级击中了你。使用大括号:

while((response=='4')||(response=='3')||(response=='2')||(response=='1'))
说明:

类似“1”的char类型的文本是整数。 现在,java对您的代码进行评估,以获得一些奇怪的结果,如…||响应==。。。并抱怨,因为响应是字符而不是布尔值。如果使用大括号,则确保首先计算单数,| |将布尔数作为操作数。我的建议是:在上述情况下,你不应该得到错误-但是,只要使用大括号,错误就会消失

此外,表达式也不等效。通过对每个单体和整个结构进行协商,并切换操作符,可以得到等价物。 以下内容与上述内容相同,或:

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

确切的错误是什么?我没有看到任何明显的东西。看起来不错。我假设评论的最后一点应该是&&response!='无法繁殖。复制/粘贴代码,并在我的机器上进行良好编译。什么不起作用?第一个代码与第二个代码等效吗?绝对不是。首先,注释的条件是错误的,因为它可能是!='最后是1英尺。你为什么会这样想4'和=='4'可能是等价的吗?如果您输入选项1-4,此循环将不会退出,如果这是您的目标,请从条件中删除响应==4。最佳答案。。。谢谢你我知道那里的代码是错的,但是我在发布之前没有注意到。不用担心!如果你对这个答案感到满意,你能接受吗
while(!((response!='4')&&(response!='3')||(response!='2')&&(response!='1')))