你能在 if 语句中有两个条件吗

新手上路,请多包涵

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

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

有人可以为我更正吗?

原文由 myt 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 1k
2 个回答

您可以使用 logical operators 来组合您的 boolean expressions

  • && 是逻辑 (两个条件都需要是 true
  • || 是逻辑 (至少一个条件需要是 true
  • ^ 或(只有一个条件需要是 true
  • ( == 按身份比较对象)

例如:

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

还有位运算符:

  • & 是按位
  • | 是按位
  • ^

它们主要在与 bits and bytes 操作时使用。然而还有另一个区别,让我们再看一下这个表达式:

 firstCondition && (secondCondition || thirdCondition)

如果您使用逻辑运算符 firstCondition 计算结果为 false 那么 Java 将不会 计算已知的第二个或第三个条件的逻辑结果成为 false 。但是,如果您使用按位运算符,那么 Java 将不会停止并继续计算所有内容:

 firstCondition & (secondCondition | thirdCondition)

原文由 Zabuzard 发布,翻译遵循 CC BY-SA 3.0 许可协议

以下是日常语言中使用的一些常用符号及其编程类似物:

  • ”在日常用语中通常指“和”。因此,这将在 Java 中转换为 AND 运算符 &&
  • / ”在日常用语中通常指“或”。因此,这将在 Java 中转换为 OR 运算符 ||

“异或”只是“x || y 但两者不能同时为真”。这在 Java 中转换为 x ^ y

在你的代码中,你可能打算使用“或”(你只是使用了不正确的“不正确的解决方案”:p),所以你应该使用“||”在第二个代码块中,使其与第一个代码块相同。

希望这有帮助:)

原文由 Simon Sirak 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题