我是个编码初学者。我最近正在创建一个聊天程序,用户可以在其中与我的计算机聊天。以下是代码的一部分:
System.out.println("Hello, what's our name? My name is " + answer4);
String a = scanner1.nextLine();
System.out.println("Ok, Hello, " + a + ", how was your day, good or bad?");
String b = scanner2.nextLine();
**if (b.equals("good"))**{ //1
System.out.println("Thank goodness");
} else**if (b.equals("it was good"))**{ //2
System.out.println("Thank goodness");
} else**if (b.equals("bad"))**{ //3
System.out.println("Why was it bad?");
String c = scanner3.nextLine();
System.out.println("Don't worry, everything will be ok, ok?");
String d= scanner10.nextLine();
} else**if (b.equals("it was bad"))**{ //4
System.out.println("Why was it bad?");
String c = scanner3.nextLine();
System.out.println("Don't worry, everything will be ok, ok?");
String d= scanner10.nextLine();
}
if(age<18){System.out.println("How was school?");}
else if (age>=18){System.out.println("How was work?");}
if语句的条件以粗体显示(用 **
). 在第一个和第二个条件的情况下,我希望我的申请做同样的事情。类似的第三和第四个条件。我以为可以把他们分在一起 if
声明。
我尝试了以下代码,但无法编译:
if (b.equals("good"), b.equals("it was good")) {
System.out.println("Thank goodness");
} else if (b.equals("bad"),(b.equals("it was bad"))) {
System.out.println("Why was it bad?");
String c = scanner3.nextLine();
System.out.println("Don't worry, everything will be ok, ok?");
String d= scanner10.nextLine();
}
有人能帮我纠正一下吗?
6条答案
按热度按时间mdfafbf11#
您正在寻找“or”操作符-通常由一个双管道表示:
||
```if (b.equals("good") || b.equals("it was good")) {
System.out.println("Thank goodness");
} else if (b.equals("bad") || b.equals("it was bad")) {
System.out.println("Why was it bad?");
String c = scanner3.nextLine();
System.out.println("Don't worry, everything will be ok, ok?");
String d= scanner10.nextLine();
}
zzwlnbp82#
有一个更简单的方法。
ujv3wf0j3#
如果你使用双杠,你可以有两个条件(
||
). 他们的意思是“或”。这意味着只有一个条件必须为真,循环才能执行。像这样:
如果你想所有的条件都是真实的使用
&&
. 这意味着要执行循环,所有条件都必须为真。如果其中任何一个为false,则不会执行循环。像这样:
如果希望某些条件对为真,还可以对条件进行分组。比如:
axr492tv4#
以下是日常语言中使用的一些常见符号及其编程类似物:
“,”在日常语言中通常指“和”。因此,这将转换为and运算符,
&&
,在java中。“/”在日常语言中通常指“或”。因此,这将转换为or运算符,
||
,在java中。“xor”只是“x | | y”,但两者不能同时为真。这意味着
x ^ y
在 java 。在您的代码中,您可能打算使用“or”(您只是使用了不正确的“不正确的解决方案”:p),因此您应该在第二个代码块中使用“| |”,使其与第一个代码块相同。
希望这有帮助:)
9cbw7uwe5#
在这一点上,这可能比你需要的答案要多。但是,正如其他一些人已经指出的,您需要or操作符“|”。有几点别人都没提过:
1) 如果(b.equals(“good”)| | b.equals(“it was good”))<--如果“b”在这里为null,您将得到一个null指针异常(npe)。如果你真的在看硬编码的值,就像你在这里一样,那么你可以反向比较。例如
如果(“好”。等于(b)| |“很好”。等于(b))
这样做的好处是,逻辑是完全相同的,但你永远不会得到一个npe,逻辑将工作正是你所期望的。
2) java使用“短路”测试。这意味着java一旦确定了结果就停止测试条件,即使所有条件还没有被测试。例如。:
如果((b!=空)&(b.equals(“好”)| | b.equals(“很好”))
你不会得到一个npe在上面的代码,因为短路的性质。如果“b”为空,java可以放心,不管下一个条件的结果是什么,答案总是假的。这样就不用费心做那些测试了。
同样,这可能比你在现阶段准备处理的信息要多,但在不久的将来,你考试的npe会咬你一口
jmo0nnb36#
你可以用
logical operators
结合你的boolean expressions
.&&
是逻辑and(两个条件都需要true
)||
是逻辑或(至少需要一个条件)true
)^
是异或(正好需要一个条件)true
)(
==
按标识比较对象)例如:
还有位运算符:
&
是位和|
是位或^
是异或它们主要用于与
bits and bytes
. 不过,还有另一个不同之处,让我们再看看这个表达式:如果使用逻辑运算符和
firstCondition
计算结果为false
那么Java
不会计算第二或第三个条件,因为整个逻辑表达式的结果是已知的false
. 但是,如果使用位运算符Java
不会停止并继续计算所有内容: