即使密码和用户名正确,下面的登录表单也会返回错误:
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");
}
}});
答案 0 :(得分:5)
Herr passs.equals(mypass)
你将char []与字符串进行比较。
您必须将char []转换为字符串:
String.valueOf(passs).equals(mypass)
答案 1 :(得分:2)
您正在比较passs
,char[]
与mypass
String
。由于.equals()
上没有char[]
方法,因此使用的方法将是来自Object
的方法:
public boolean equals(Object obj) {
return (this == obj);
}
这将返回false
,因为passs
和mypass
不是同一个对象。
正如@Jens所说,您可以将char[]
转换为String
:
String.valueOf(passs).equals(mypass)
或者您可以将String
转换为char[]
并将其与另一个进行比较:
Arrays.equals(passs, mypass.toCharArray())