2011-11-09 469 views
1

基本上,我想要做的是一個非常簡單的登錄屏幕,以便了解擺動。將字符串與字符串數組進行比較

我的問題是我現在有一個文件pass.txt這是格式化像這樣:在我的Java文件

Username = bob,tony,mike 
Password = pass,pass2,pass3 

我用得到的字符串:

String[] user = prop.getProperty("Username").split(","); 

現在我然後比較這從JTextField我的文字輸入,但是始終未能我有什麼是:

if (input2.equals(pass) && userin.getText().equals(user)) 

現在我猜我的問題是我有一個字符串數組,現在比較它與單個字符串現在我想要做的是通過數組,如果其中任何匹配我希望它採取匹配並使用它如果這是有道理的,有什麼辦法可以解決這個問題嗎?

+2

你應該考慮使用軟件包中提供的'Collection'類'之一java.util'而不是一個字符串數組。 'Collection'有一個'contains'方法,可以檢查集合中是否存在特定的項目。 –

回答

0

您必須搜索用戶名錶,找到引入用戶名的位置,然後檢查該位置上的密碼是否與用戶引入的密碼相同。

0

你必須以某種方式在數組中搜索你正在尋找的字符串。有很多這樣做的方法,我將概述一種方法。

int index = 0; 
for (String s : user) { 
    if (s.equals(userin.getText()) { 
     // the username matches! now check to see if the password at the _same index_ matches 
     if (pass[index].eqals(input2.getText()) { 
      // correct username and password! 
     } else { 
      // bad password! 
     } 
    } 
    ++index; 
} 

我假設你有密碼陣列稱爲pass和指數匹配的user陣列。 (記者user[i]密碼是pass[i]

4

假設你有一個pass陣列,以配合您user陣列,並在user每個條目是保證在pass相應的條目,那麼下面的解決辦法應該工作:

int index = Arrays.asList(user).indexOf(userin.getText()); 
String password = pass[index]; 

if (password.equals(input2)) { 
    // Successful authentication 
} else { 
    // Authentication failed 
} 
  • Arrays.asList(user).indexOf(userin.getText())將得到的 索引列表中的用戶(在例子中, 「鮑勃」=> 0; 「託尼」=> 1; 「邁克」=> 2)。
  • password然後是該索引處的密碼字符串(在您的示例中, 「pass」=> 0;「pass2」=> 1;「pass3」=> 2)。
  • 然後,if將與用戶 (password)關聯的密碼與在對話框 (input2)中輸入的密碼進行比較。
+0

一些關於這實際上在做什麼的註釋:'Arrays.asList(x)'將數組'x'轉換爲'java.util.List',列表中的所有元素都以與它們出現的順序相同的順序出現在陣列中。 'indexOf'是'List'上的一個方法,它返回找到給定元素的第一個索引,如果給定元素不在列表中,則返回-1。請注意,如果給定的用戶名不在'user'數組中,上面的代碼實際上會與'ArrayIndexOutOfBoundsException'一起崩潰,因爲在第2行中,您將使用'-1'將數組索引到'pass'數組中。 –

+0

非常出色的工作,非常感謝! – Coombes

6

我覺得這可能會幫助你,因爲我認爲你必須檢查每個用戶用他的密碼INT此陣:

for(int i=0;i < user.size();i++){ 
    if(input2.equals(pass[i]) && userin.getText().equals(user[i])){ 
    //your code 
    } 
} 
相關問題