2015-09-08 119 views
-1

有人可以告訴我我的代碼有什麼問題嗎?即使我把正確的密碼,無法與爲getBalance()來訪問平衡... :(無法正確訪問getter

package home.exercises.exceptionHandling; 

import java.util.InputMismatchException; 
import java.util.Scanner; 

public class Manager { 

    private double balance = 15000.25; 


     public void getBalance() throws InputMismatchException { 

     @SuppressWarnings("resource") 
     Scanner s = new Scanner(System.in); 

     System.out.println("Enter password: "); 

     String password = s.nextLine(); 

     if (password == "ManagerWantsTogetBalance") { 

      System.out.println("Remainning balance is " + this.balance);  
     } else { 
      System.out.println("Wrong password! Try Again.."); 
     } 



    } 

} 



package home.exercises.exceptionHandling; 

import java.util.InputMismatchException; 

public class TestManager { 

    public static void main(String[] args) { 

     Manager branchManager = new Manager(); 

     try { 
      branchManager.getBalance(); 
     } 
     catch(InputMismatchException iex) { 

      System.out.println("Put password in the correct form"); 
     } 

    } 

} 
+0

這篇文章缺少一個例子和一個明確的問題陳述。您必須提供輸入示例,說明此代碼無法運行。 –

回答

0

您有==來比較你Strings.equals()功能,從來沒有。

if("ManagerWantsTogetBalance".equals(password)){ 
    //Code 
} 
+0

謝謝噸..它的工作! – izengod

+0

@ Tito.S.Roy不客氣:) –

1

問題就在這裏:

password == "ManagerWantsTogetBalance" 
你應該使用 equals(或 equalsIgnoreCase如果你不關心大寫

/小寫差異)來比較兩個String,因爲這些方法會檢查實際內容。

==運算符會檢查對象的引用是否相等(它們指向相同的內存區域)。

欲瞭解更多信息:Java String.equals versus == [duplicate]

0

當比較字符串我們使用.equals( 「Whatyouwanttocompare」)方法。所以,你的if語句應該像 如果(password.equals( 「ManagerWantsTo爲getBalance」)){} 您 使用==來原始數據類型比較,如int和double等

0

==運算符比較對象的引用。所以只有當操作數是相同的對象時才返回true。在字符串的情況下,只有當對象是相同的字符串時纔會返回true。如果您想比較字符串,請使用equals方法。如果字符串的內容是相同的,那麼這就是你想要的行爲,它會返回true:

string1.equals(string2)