即使密码和用户名正确,登录表单也会返回错误

时间:2015-06-16 07:14:29

标签: java

即使密码和用户名正确,下面的登录表单也会返回错误:

login.addActionListener(new ActionListener(){

        public void actionPerformed(ActionEvent e) {

            String us = user.getText().toLowerCase();
            char[] passs = pasword.getPassword();

            String myuser = "a";
            String mypass = "b";
            if(us.equals(myuser) && String.valueOf(passs).equals(mypass)){
                JOptionPane.showMessageDialog(null, "correct");

            }else{
                JOptionPane.showMessageDialog(null, "incorrect");

            }
    }});

2 个答案:

答案 0 :(得分:5)

Herr passs.equals(mypass)你将char []与字符串进行比较。

您必须将char []转换为字符串:

String.valueOf(passs).equals(mypass)

答案 1 :(得分:2)

问题

您正在比较passschar[]mypass String。由于.equals()上没有char[]方法,因此使用的方法将是来自Object的方法:

public boolean equals(Object obj) {
    return (this == obj);
}

这将返回false,因为passsmypass不是同一个对象。

如何解决

正如@Jens所说,您可以将char[]转换为String

String.valueOf(passs).equals(mypass)

或者您可以将String转换为char[]并将其与另一个进行比较:

Arrays.equals(passs, mypass.toCharArray())