if语句中可以有两个条件吗

ohfgkhjo  于 2021-07-03  发布在  Java
关注(0)|答案(6)|浏览(399)

我是个编码初学者。我最近正在创建一个聊天程序,用户可以在其中与我的计算机聊天。以下是代码的一部分:

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();
}

有人能帮我纠正一下吗?

mdfafbf1

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();
}

zzwlnbp8

zzwlnbp82#

有一个更简单的方法。

if (b.contains("good")) {
  ...
}
else if (b.contains("bad")) {
  ...
}
ujv3wf0j

ujv3wf0j3#

如果你使用双杠,你可以有两个条件( || ). 他们的意思是“或”。这意味着只有一个条件必须为真,循环才能执行。
像这样:

if(condition || otherCondition || anotherCondition) {
    //code here

如果你想所有的条件都是真实的使用 && . 这意味着要执行循环,所有条件都必须为真。如果其中任何一个为false,则不会执行循环。
像这样:

if(condition && otherCondition && anotherCondition) {
    //code here

如果希望某些条件对为真,还可以对条件进行分组。比如:

if(condition || (otherCondition && anotherCondition)) {
    //code here
axr492tv

axr492tv4#

以下是日常语言中使用的一些常见符号及其编程类似物:
“,”在日常语言中通常指“和”。因此,这将转换为and运算符, && ,在java中。
“/”在日常语言中通常指“或”。因此,这将转换为or运算符, || ,在java中。
“xor”只是“x | | y”,但两者不能同时为真。这意味着 x ^ y 在 java 。
在您的代码中,您可能打算使用“or”(您只是使用了不正确的“不正确的解决方案”:p),因此您应该在第二个代码块中使用“| |”,使其与第一个代码块相同。
希望这有帮助:)

9cbw7uwe

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会咬你一口

jmo0nnb3

jmo0nnb36#

你可以用 logical operators 结合你的 boolean expressions . && 是逻辑and(两个条件都需要 true ) || 是逻辑或(至少需要一个条件) true ) ^ 是异或(正好需要一个条件) true )
( == 按标识比较对象)
例如:

if (firstCondition && (secondCondition || thirdCondition)) {
    ...
}

还有位运算符: & 是位和 | 是位或 ^ 是异或
它们主要用于与 bits and bytes . 不过,还有另一个不同之处,让我们再看看这个表达式:

firstCondition && (secondCondition || thirdCondition)

如果使用逻辑运算符和 firstCondition 计算结果为 false 那么 Java 不会计算第二或第三个条件,因为整个逻辑表达式的结果是已知的 false . 但是,如果使用位运算符 Java 不会停止并继续计算所有内容:

firstCondition & (secondCondition | thirdCondition)

相关问题