大家好,谢谢你的时间。我需要编写一个验证用户凭据的方法。我有一个用户名的字符串数组和一个密码字符串数组我希望用户在一个对话框中输入用户名和密码,然后检查该用户名和密码是否匹配,但我似乎正在敲墙即使密码和用户名有效,也会返回false。
private static final String[] EMPLOYEE = { "Abe", "Bob", "Cud"}; // names of all employees
private static final String[] EMPLOYEE_PSWD = { "aaa", "bbb", "ccc"}; // passwords for the employees in same order as names
以上是数组作为字段,下面是OptionPane声明。
userName = JOptionPane.showInputDialog(null, "Please enter a username:", "Login", QSTN);
password = JOptionPane.showInputDialog(null, "Please enter a password:", "Login", QSTN);
verifyUser(userName,password);
(这是一个主要方法的片段。整个项目是创建一个销售报告程序,员工输入凭证然后输入他/她卖的东西。如果你需要我把整件事情告诉我,请告诉我)
这就是我试图使用的东西,我只是在吐出想法:
private static void verifyUser(String userName, String password)
{
for(int i = 0; i<EMPLOYEE.length; i++)
{
HashMap<String,String> login = new HashMap<String, String>();
login.put(EMPLOYEE[i],EMPLOYEE_PSWD[i]);
if(!login.get(userName).equals(EMPLOYEE_PSWD[i]))
{
JOptionPane.showMessageDialog(null, "Invalid password or username", "Error", INFO);
System.exit(0);
}
}
}
如果你们需要其他任何东西,请告诉我! 谢谢!
答案 0 :(得分:0)
你不需要HashMap,放轻松。
boolean ok = false;
for(int i = 0; i<EMPLOYEE.length; i++)
{
ok |= EMPLOYEE[i].equals(username) && EMPLOYEE_PSWD[i].equals(password);
}
if (ok) {} // password match
else {} // wrong password
答案 1 :(得分:0)
尝试这样的事情:
private static void verifyUser(String userName, String password)
{
for(int i = 0; i < EMPLOYEE.length; i++)
{
if (EMPLOYEE[i].equals(userName))
{
if (!EMPLOYEE_PSWD[i].equals(password))
{
JOptionPane.showMessageDialog(null, "Invalid password or username", "Error", INFO);
System.exit(0);
}
// login was successful
}
}
}
答案 2 :(得分:0)
您可以尝试使用此代码。
private static void verifyUser(String userName, String password) {
//null check and all
Map<String, String> login = new HashMap<String, String>();
for (int i = 0; i < EMPLOYEE.length; i++) {
login.put(EMPLOYEE[i], EMPLOYEE_PSWD[i]);
}
if (login != null && login.size() > 0 && password.equals(login.get(userName))) {
System.out.println("Valid username and password");
} else {
System.out.println("Invalid password or username");
}
}
更新:将参考从HashMap更改为接口Map。