2012-12-27 41 views
-2

可能重複:
How do I compare strings in Java?初學Java字符串

所以,我有一個關於測試運營商和字符串的問題。我正在嘗試編寫一個程序,用於輸入「男孩」或「女孩」的用戶輸入。當用戶輸入「男孩」時,輸出應該是「你是男孩」。當用戶輸入「女孩」時,輸出結果應該是「你是女孩」。

但是,當我編譯並運行程序時,無論我輸入什麼,輸出總是「你是女孩」。

這是因爲字符串沒有像整數那樣的實際值,因此測試操作符不能用於比較它們嗎?

另外,有沒有像java中的python assert函數?

import java.util.Scanner; 

class apples{ 
    public static void main(String args[]){ 
     System.out.println("Are you a boy or a girl?"); 
     Scanner lalala = new Scanner(System.in); 
     String text = lalala.nextLine(); 

     if (text == "boy"){ 
      System.out.println("You are a boy."); 
     } 
     else{ 
      System.out.println("You are a girl."); 
     } 



    } 
} 

非常感謝〜

+0

user text.equals(「boy」)instead of text ==「boy」 – Sujan

回答

6

使用

text.equals("boy") 

,而不是

if (text == "boy") 

原因:

2

使用text.equalsIgnoreCase("boy")

如果你仔細想想情況下,也將檢查字符串的內容是一樣的。

==用於檢查對象是否相等。

text.equals(「男孩」)是好的,如果你不考慮案件。在Java中if (text.equals("boy")){

==不是爲字符串內容同性檢查

1

請使用equals方法對於像串是,在Java中,==總是比較兩個引用(對於非基元來說),即它測試兩個操作數是否引用同一個對象。

但是,可以重寫equals方法 - 因此兩個不同的對象仍然可以相等。

但更好的選擇是使用equalsIgnoreCase,原因是用戶可能會輸入男孩或男孩或男孩或任何其他組合。 equalsIgnoreCase方法只是忽略大小寫並比較兩個字符串。

text.equalsIgnoreCase("boy") 
1

==測試對象標識是否相同。當你有兩個包含相同值的字符串對象時,這個對象標識不會相等。使用equals函數來測試邏輯等價。

1

附註。男孩以外的輸入會讓你打印女孩。如果條件多加一個。在進行比較之前,在安全的一側修剪空白字符串。

使用

text.equals("boy") 

text.equalIgnoreCase("boy") 

如果不區分大小寫。

代替

if (text == "boy") 

你COADE會是這樣的

import java.util.Scanner; 

class apples{ 
public static void main(String args[]){ 
    System.out.println("Are you a boy or a girl?"); 
    Scanner lalala = new Scanner(System.in); 
    String text = lalala.nextLine(); 
    text = text.trim(); 
    if (text.equalIgnoreCase("Boy")){ 
     System.out.println("You are a boy."); 
    } 
    else if(text.equalIgnoreCase("Girl")){ 
     System.out.println("You are a girl."); 
    } else { 
     System.out.println("Invalid Gender"); 
    } 
} 
} 
1

你如果別人是錯的。只有在這裏使用。否則,

If I entered "gay", the output will be "You are girl", lol!, just kidding :) 

像這樣

if (text.equalsIgnoreCase("boy")) { 
     System.out.println("You are a boy."); 
    } 
    else if (text.equalsIgnoreCase("girl")) { 
     System.out.println("You are a girl."); 
    } else { 
     System.out.println("I think you are gay"); 
    } 
0

這將是最好使用.equals方法,而不是==男孩

0

對於你的另一個問題就斷言: Java有一個斷言功能。這是示例代碼。

assert(x <= 50):  "Not Accepted"; 

此代碼檢查整數x是否大於50.您將在控制檯上看到輸出。