2010-04-13 76 views
0

我正在做一個密碼登錄,需要我匹配兩個數組:User和Pass。如果用戶鍵入「標記」和「通過」,它應該顯示成功。但是我有String [] input = pass.getPassword();和兩個數組的匹配。Java:匹配兩種不同類型的數組

String[] User = {"mark", "susan", "bobo"}; 

    String[] Pass = {"pass", "word", "password"}; 
    String[] input = pass.getPassword(); 

    if(Pass.length == input.length && user.getText().equals(User)) 
    { 
    lblstat.setForeground(Color.GREEN); 
    lblstat.setText("Successful"); 
    } 
    else 
    { 
    lblstat.setForeground(Color.RED); 
    lblstat.setText("Failed"); 
    } 
+0

比「我有麻煩」更具體。你是否收到錯誤消息?輸出?究竟是什麼問題? 乍一看,它看起來像是用getText()。equals命令將字符串與字符串數組進行比較 – brydgesk 2010-04-13 18:49:18

回答

0

Arrays.equals(input,Pass)?

3

我推薦使用Map<K, V>來代替。這樣,將鍵值對保存在一起更容易。

Map<String, String> logins = new HashMap<String, String>(); 
logins.put("mark", "pass"); 
logins.put("susan", "word"); 
logins.put("bobo", "password"); 

String username = user.getText(); 
String password = pass.getPassword(); 

if (logins.containsKey(username) && logins.get(username).equals(password)) { 
    // Known login. 
} else { 
    // Unknown login. 
} 

要了解有關地圖的更多信息,請檢查Sun tutorial on the subject

0

我沒有完全得到你的問題,但我能猜到你在找什麼:

代替陣列可以使用HashMap中與主要的用戶值和值作爲傳遞值。所以當你想要一個特定用戶的密碼時,你可以從地圖上獲得這個密碼。

0

我建議你也使用某種鍵值數據結構。你也可以試試這個:

char[] input = pass.getPassword(); 
String password = new String(input); 

然後你按照BalusC的建議做。 您可能會考慮修剪從包含用戶名的文本框中讀取的字符串。