2011-11-09 408 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 
    } 
} 
相关问题