我是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();
}
谢谢! 这真的很有帮助!