2013-09-11 83 views
-1

我正在研究我正在製作的遊戲,當我遇到錯誤時。我的if/else if語句直接跳到else if語句,即使它不應該。簡單的Java如果/否則如果聲明不起作用

String neededCredits = "200"; 

if(Peeamnt.getText() == neededCredits) { 
     System.out.println("You can afford this"); 
JOptionPane.showMessageDialog(BuyPoopButton, 
     "You have unlocked the Poop Button for 200 Pee Credits!", 
     "Toilet Master", 
     JOptionPane.WARNING_MESSAGE); 
} 
    else if((!(Peeamnt.getText() == neededCredits))) { 
     System.out.println("You cannot afford this"); 
     JOptionPane.showMessageDialog(BuyPoopButton, 
       "You do not have enough Credits to buy this!\n" 
       + "To buy it, you need 200 Pee Credits!", 
       "Toilet Master", 
       JOptionPane.ERROR_MESSAGE); 
} 

即使Peeamnt的文本爲偶數200,代碼將跳轉到的else if語句,告訴我,我沒有200個小便學分。 (我製作的遊戲包含很多廁所幽默。)無論如何,如果任何人看到我在這個代碼中的錯誤,請讓我知道。讓我知道你是否需要更多的代碼。

+0

部分。我猜.equals(){解決了我的問題。謝謝。 ;) – FreshCoffee

+0

可能不需要兩次調用'getText'。如果'neededCredits.equals(Peeamnt.getText())'爲false,那麼'else'部分將自動發生。你不需要再把'neededCredits'測試放在那裏。如果'getText()'實際上做了類似於等待用戶鍵入內容的事情,那麼您發佈的代碼將等待兩次輸入,這可能不是您想要的。 – ajb

回答

0

嘗試使用equals方法如果getText()返回一個字符串不使用==符號。我想那getText() returns a String`對象。

供參考:雙等號用於查看兩個對象是否相同 並檢查對象是否具有相同的值equals()應使用方法。注意:您與equals()進行比較的對象應該覆蓋它,否則結果將會損壞,並且您重寫equals()方法時記得也要覆蓋hashCode()

2

對於Java String對象,==運算符不會比較字符串值。
嘗試改變第一if比較:

if(Peeamnt.getText().equals(neededCredits)) {

你需要做的else if以及類似的東西。

+0

更好的是'neededCredits.equals(Peeamnt。getText()),因爲我們知道'neededCredits'不是null。 –

1

字符串是對象。對象有一個參考。包含相同字符序列的兩個String對象可能不是同一個對象,因此具有不同的引用。 ==運算符(通常)檢查引用是否相等。

要比較兩個字符串對象的字符序列是否相等,請使用equals方法。所以請改用Peeamnt.getText().equals(neededCredits)

1

字符串是一個對象。比較對象,您必須使用equals來判斷對象內容是否相同。使用==是比較對象參考

0

使用方法等於比較String對象,因爲==運算符表示您比較基於內存地址的對象。 *從不使用==比較對象。

String neededCredits = "200"; 

if(neededCredits.equals(Peeamnt.getText()) {//compare following you never see, because nullPointerException "neededCredits" always has value :-) 
     System.out.println("You can afford this"); 
JOptionPane.showMessageDialog(BuyPoopButton, 
     "You have unlocked the Poop Button for 200 Pee Credits!", 
     "Toilet Master", 
     JOptionPane.WARNING_MESSAGE); 
} 
    else if((!(neededCredits.equals(Peeamnt.getText()))) { 
     System.out.println("You cannot afford this"); 
     JOptionPane.showMessageDialog(BuyPoopButton, 
       "You do not have enough Credits to buy this!\n" 
       + "To buy it, you need 200 Pee Credits!", 
       "Toilet Master", 
       JOptionPane.ERROR_MESSAGE); 
} 
1

使用等於方法來比較String對象,因爲==操作意味着你的內存地址比較對象的基礎。永遠不要使用==來比較Java中的對象。