如何修复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')))