嘿,大家好,我有一个用户注册然后登录的表单。注册用户名和密码的数据存储在这样的 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);
}
}
});
}
关于这里可能出什么问题的任何想法吗?
最佳答案
您没有正确使用或检查 map 。首先,您需要将用户名映射到密码:
usersMap.put(registerUser.getText(), registerPassword.getPassword());
现在,每当您尝试登录时,您都会尝试在 map 中查找用户名,如果找到用户,则会将存储的密码与登录密码进行比较:
if (usersMap.containsKey(loginUser.getText())) {
String storedPassword = usersMap.get(loginUser.getText());
if (storedPassword.equals(loginPassword.getPassword())) {
// valid login
} else {
// invalid login
}
} else {
// invalid login
}
关于java - 如果 HashMap 中存在值则登录用户,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27411639/