2013-02-16 84 views
0

問題已解決。在方法內返回Array結果

我在我的課上有兩種方法。

private void retrieveDetails(){ 
List<String> details = File.getCredentials(); 
username = details.get(0); 
pw = details.get(1); 
} 

private void checkCredentials() throws IOException { 
     retrieveDetails(); 
     System.out.println("\nPlease enter USERNAME: "); 
     String usersName = scan.next(); 

     System.out.println("\nPlease enter PASSWORD: "); 
     String usersPW = scan.next(); 

     System.out.println("\nEntered details: " + usersName + ", " + usersPW); 
     System.out.println("\nSystems details: " + userName + ", " + pw); 

     if (usersName.equals(username) && usersPW.equals(pw)) { 
      doWork(); 
     } else { 
      System.out.println("Incorrect credentials"); 
     } 
    } 

我想我想出了一個解決方案,將以下內容移至我的字符串初始化位置。

List<String> creds = File.getCredentials(); 

我創建了一個System.out語句來檢查,如果從retrieveDetails()來的細節匹配由用戶輸入。他們這樣做的比賽 - 但是當系統進入else子句而不是執行doWork();

+0

所以你調試? – ogzd 2013-02-16 12:30:40

+0

什麼是'plainPassword'和'pw'?他們是相同還是不同? – 2013-02-16 12:31:22

+1

'File.getCredentials()'的實現是什麼?檢查你正在返回的字符串是否被修剪。 – Perception 2013-02-16 12:31:33

回答

0

如果打印內容相同,則在比較之前嘗試修剪。例如: -

所有的

if (usersName.trim().equals(username.trim()) && usersPW.trim().equals(pw.trim())) {

+0

謝謝@Cratylus。這工作。我是否認爲.trim()從變量中刪除空格? – 2013-02-16 12:39:53

+0

@AdamHinx:'trim'返回字符串的一個副本,省略前導和尾隨空白。如果它工作,請接受答案 – Cratylus 2013-02-16 12:45:08

0

時,我也有類似的問題,我做這個簡單的一招:因爲有時你必須字符

打印字符串的大小,你是在比較如打印字符串時不可見的\ n或\ r。

0

首先,好像你必須在以下系統輸出語句中的錯字。其次,您可能想要修剪字符串以便更好地進行字符串比較。 有時,從文件或控制檯讀取的字符串可能包含不需要的和難以捕捉的空字符串,如空格和製表符。這些可以通過在字符串上調用.trim()方法來刪除。

因此,請嘗試使用下面的代碼來代替:

if (usersName.trim().equals(username.trim()) && usersPW.trim().equals(pw.trim())) { 
} 
0
usersName.equals(username) && usersPW.equals(pw). 

我面臨這些問題的同時,這些一種平等的總是棘手,嘗試修剪,你會比較,以及如果你可以根據它們的長度比較這些字符串。

if (usersName.trim().equalsIgnoreCase(username.trim()) && usersPW.trim().equalsIgnoreCase(pw.trim())) 


if (usersName.trim().length()==username.trim().length && usersPW.trim().length()==pw.trim().length))