如果HashMap中存在值,则登录用户

时间:2014-12-10 21:59:26

标签: java hashmap

嘿伙计们我有一个用户注册然后登录的表单。注册用户名和密码中的数据存储在这样的哈希映射中:

if (usersMap.containsKey("username")) {
    JOptionPane.showMessageDialog(LoginForm.this, "User already exists !", "ERROR", JOptionPane.ERROR_MESSAGE);
} else {
    usersMap.put("username", registerUser.getText());
    usersMap.put("userpassword", registerPassword.getPassword());
    JOptionPane.showMessageDialog(LoginForm.this, "Registration Successful !!", "SUCCESS", JOptionPane.PLAIN_MESSAGE);
}

我还检查用户名中的重复条目,并且工作正常

当我尝试将用户登录时,会出现问题。

这是我的登录代码:

private void clickEventRightPanel() {
        loginBtn.addActionListener(new ActionListener() {

            @Override
            public void actionPerformed(ActionEvent e) {
                unameLog = loginUser.getText();
                logPass = loginPassword.getPassword();

                if (usersMap.values().contains(loginUser.getText()) && usersMap.values().contains(loginPassword.getPassword())) {
                    JOptionPane.showMessageDialog(LoginForm.this, "Login sucessfull !!", "SUCCESS", JOptionPane.PLAIN_MESSAGE);
                } else {
                    JOptionPane.showMessageDialog(LoginForm.this, "User does not exist ! Try again !", "ERROR", JOptionPane.ERROR_MESSAGE);
                }

            }
        });

    }

关于这里可能出现什么问题的任何想法?

3 个答案:

答案 0 :(得分:2)

您没有正确使用或检查地图。首先,您需要将用户名映射到密码:

usersMap.put(registerUser.getText(), registerPassword.getPassword());

现在,只要您尝试登录,就会尝试在地图中找到用户名,如果找到了用户,则将存储的密码与登录密码进行比较:

if (usersMap.containsKey(loginUser.getText())) {
    String storedPassword = usersMap.get(loginUser.getText());
    if (storedPassword.equals(loginPassword.getPassword())) {
        // valid login
    } else {
        // invalid login
    }
} else {
    // invalid login
}

答案 1 :(得分:0)

检查用户是否存在的代码会检查地图的密钥(usersMap.containsKey),但后面的代码会检查值(usersMap.values().contains(loginUser)

答案 2 :(得分:0)

由于您的HashMap将用户名和密码存储为值,因此您需要将输入的值与“username”和“password”键对应的值进行比较。

if(usersMap.containsKey("username") && userMap.containsKey("password"){
   //There is a mapping for username and password.
   if(usersMap.get("username").equals(unameLog)
    && usersMap.get("password").equals(logPass)){
        //login successful
   }
   else
      //Login failed, but mapping exists.
}else
   //No mapping for username or password.

由于usersMap.get(“username”)将返回用户名。