java if and_关于java:if语句中可以有两个条件吗

我是Java编码的初学者,因此我会定期浏览以我的基本知识查找初学者项目。 最近,我正在创建一个聊天程序,用户可以在其中与我的计算机聊天。 这是代码的一部分,因为我不需要显示整个代码:

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"))** {

System.out.println("Thank goodness");

} else **if (b.equals("it was good"))** {

System.out.println("Thank goodness");

} else **if (b.equals("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();

}

else **if (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();

}

if(age<18){System.out.println("How was school?");}

else if (age>=18){System.out.println("How was work?");}

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

}

有人可以为我更正吗? 我真的很感激!

if (b.equals("good") || b.equals("it was good")) ||是OR运算符

谢谢! 这真的很有帮助!

您可以使用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)

非常感谢! 这真的很有帮助!

因此在我的代码中,如果我想同时使用这两个条件,这就是我要做的事情:if((b.equals(" good"))||(b.equals(" it is Good"))) {System.out.println(" Thank goodness"); }

对,就是这样。 只需将语句与逻辑运算符组合即可。

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

","通常是指日常语言中的"和"。因此,这将转换为Java中的AND运算符&&。

" /"通常是指日常语言中的"或"。因此,这将转换为Java中的OR运算符||。

" XOR"仅是" x || y,但不能同时为真"。这在Java中转换为x ^ y。

在您的代码中,您可能打算使用"或"(您刚才使用了不正确的"不正确的解决方案":p),因此应使用" ||"在第二个代码块中,使其与第一个代码块相同。

希望这对您有所帮助:)

谢谢! 这真的很有帮助!

有一种更简单的方法。

if (b.contains("good")) {

...

}

else if (b.contains("bad")) {

...

}

这可能是您目前所需的答案。但是,正如其他几个人指出的那样,您需要OR运算符" ||"。没有其他人提到过两点:

1)如果(b.equals(" good")|| b.equals("它很好"))

if(" good" .equals(b)||"这很好" .equals(b))

这样做的好处是逻辑完全相同,但是您永远不会获得NPE,并且逻辑将按您期望的那样工作。

2)Java使用"短路"测试。这是非常规的,这意味着即使确定了所有条件,Java也会在确定结果后停止测试条件。例如。:

if((b!= null)&&(b.equals(" good")|| b.equals(" it was good"))))

由于短路,您不会在上面的代码中获得NPE。如果" b"为空,则Java可以确保无论下一个条件的结果如何,答案始终为假。因此,它不会打扰那些测试。

同样,这可能比您准备在现阶段处理的信息更多,但是在不久的将来的某个时候,您的测试的NPE会刺痛您。 :)

谢谢! 这真的很有帮助!

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

像这样:

if(condition || otherCondition || anotherCondition) {

//code here

如果您希望所有条件都为真,请使用&&。这意味着为了执行循环,所有条件必须为真。如果其中任何一个为假,则循环将不会执行。

像这样:

if(condition && otherCondition && anotherCondition) {

//code here

如果您希望条件对成对,也可以对条件进行分组。就像是:

if(condition || (otherCondition && anotherCondition)) {

//code here

谢谢! 这真的很有帮助!

您正在寻找" 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();

}

谢谢! 这真的很有帮助!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值