java - 为什么我的密码验证在 Java 中不起作用?

标签 java swing jpasswordfield

我的登录屏幕上有一个密码字段。由于某种原因,当我输入正确的密码(“u123”)时,即使它是正确的,它也会给我错误的密码错误消息。为什么要这样做呢。

我的代码如下:

btnLogin = new JButton("Login");
btnLogin.addActionListener(new ActionListener() {
        public void actionPerformed(ActionEvent e) {
            char[] userInput = passwordField.getPassword();
            char[] correctPassword = { 'u', '1', '2', '3'};

            if (userInput.equals(correctPassword)) {
            JOptionPane.showMessageDialog(LoginScreen.this,
                    "Success! You typed the right password.");
            } else {
                JOptionPane.showMessageDialog(LoginScreen.this,
                    "Invalid password. Try again.",
                    "Error Message",
                    JOptionPane.ERROR_MESSAGE);
            }
        }
    });

我知道这可能不是进行密码检查的最佳方法,但我只是一个初学者,只是想进行一些练习。

最佳答案

您的代码有:

char[] userInput = passwordField.getPassword();
char[] correctPassword = { 'u', '1', '2', '3'};

这是两个不同的字符数组。

所以这个测试返回 false :

 if (userInput.equals(correctPassword))

相反,请尝试使用 Arrays.equals()方法

 if (Arrays.equals(userInput, correctPassword)) { ... }

关于java - 为什么我的密码验证在 Java 中不起作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44001442/

相关文章:

java - Java正则表达式的问题

Java Getter 方法 - 如何重新利用它们?

java - 如何显示 JPasswordField 的文本

java - 如何在 JPasswordField 中启用剪切、复制?

java - 使用JPasswordField并使用getPassword +服务器登录过程处理密码

java - 为什么Android中不保留Intent

java - gradle 构建后 JAR 中缺少资源文件

java - Swing 计时器问题 - 停止计时器

java - JMS回滚有多可靠?

java - 如何将图像添加到动态创建的 JTable