2017-06-29 110 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")) { 
    ... 
}