2017-06-29 141 views
-4

我是java编程的初学者,所以我经常浏览以使用我的基本知识来查找初学者项目。最近我正在创建一个聊天程序,用户可以与我的电脑聊天。这里是代码的一部分,因为我不需要显示整个代码:你可以在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"))** { 
      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(); 
     } 

有人可以纠正它给我吗?我真的很感激它!

+7

'如果(b.equals( “好”)|| b.equals( “这是很好的”))''的'||是或操作 – luizfzs

+0

谢谢!这真的很有帮助! –

回答

4

您可以使用logical operatorsboolean expressions结合起来。

  • &&是逻辑(两个条件都需要是true
  • ||是逻辑(至少一个条件需要是true
  • ^XOR (恰好一个条件需要是true
  • ==比较对象同一性)

例如:

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

还有一些位运算符:

  • &是一个按位
  • |是一个按位
  • ^XOR

bits and bytes操作时,他们主要使用。但是还有另外一个区别,让我们再次来看看这个表情:如果您使用逻辑运算符

firstCondition && (secondCondition || thirdCondition) 

firstCondition评估为false然后Java不会计算第二或第三个条件作为的结果整个逻辑表达式已知为false。但是,如果你使用的位运算符,然后Java不会停止并继续计算一切:

firstCondition & (secondCondition | thirdCondition) 
+0

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

+0

所以在我的代码中,如果我想在我的条件中使用两者,这是我必须做的:if((b.equals(“good”))||(b.equals(“it good”)) ){ System.out.println(“谢天谢地”); } –

+0

是的。只需将这些陈述与逻辑运算符结合起来。 – Zabuza

0

您正在寻找的“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

你可以有两个条件,如果你使用双杆(||)。他们的意思是“或”。这意味着只有ONE您的条件必须是真实的循环执行。

事情是这样的:

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

如果你希望所有的条件是真实的使用&&。这意味着ALL条件必须为真才能执行循环。如果其中任何一个为假,则循环将不会执行。

事情是这样的:

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

您也可以组条件,如果你想一定对他们来说是真实的。是这样的:

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

谢谢!这真的很有帮助! –

0

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

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

“XOR”只是“x || y但是两者不能同时为真”。这在Java中转换为x^y。在你的代码中,你可能打算使用“或”(你只是使用了不正确的“不正确的解决方案”:p),所以你应该使用“||”在第二个代码块中它变得与第一个代码块相同。

希望这有助于:)

+1

谢谢!这真的很有帮助! –

0

这比你需要在这一点上可能更多的答案。但是,正如其他几个人已经指出的那样,您需要OR运算符“||”。有几点没有人提到过:

1)if(b.equals(“good”)|| b.equals(“it was good”))< - 如果“b”为空在这里,你会得到一个空指针异常(NPE)。如果你真的在寻找硬编码值,就像你在这里一样,那么你可以改变比较。例如。

如果(“好” .equals(B)||“这是很好的” .equals(B))

做这种方式是,逻辑是完全相同的优势,但你” 从来没有得到一个NPE,并且逻辑将工作只是你的期望。

2)Java使用“短路”测试。从根本上讲,即使所有条件尚未经过测试,Java一旦确定了结果就停止测试条件。例如:

如果(!(B = NULL)& &(b.equals( “好”)|| b.equals( “这是很好的”)))

你不会得到在NPE上面的代码因为短路性质。如果“b”为空,Java可以保证不管下一个条件的结果如何,答案总是错误的。所以它不会执行那些测试。

同样,这可能比您在此阶段准备处理的信息要多,但在不久的将来,您的测试的NPE会咬你。 :)

+0

谢谢!这真的很有帮助! –

0

有一个更简单的方法。

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