当我在passwordField中输入“abcd”,并使用System.out.println(s21) - 检查密码时 - 显示“[C @ 1372a1a”,为什么?
private void submit() {
String s1 = userNameField.getText();
char[] s2 = passwordField.getPassword();
String s21 = s2.toString();
if (s1.equals(management.getUsernamesAdmin())&& s21.equals(management.getPasswordsAdmin())) {
SystemManagementPage admin = new SystemManagementPage(this, true, management);
admin.setVisible(true);
}
}
}
答案 0 :(得分:12)
你的问题在这里:
String s21 = s2.toString();
这是在toString()
上调用char[]
,并且不会返回任何有用的内容。取而代之的是,
String s21 = new String(s2);
将为您提供由数组中的字符组成的字符串。
除此之外,我看不出你的代码不起作用的任何原因。
答案 1 :(得分:2)
char[] s2 = passwordField.getPassword();
String s21 = s2.toString();
s2是char []
类型的Objects2.toString()返回s2对象的字符串表示形式,由java.lang.Object实现
... getClass()。getName()+'@'+ Integer.toHexString(hashCode())
答案 2 :(得分:1)
我的建议:
String s21 = s2.toString();
后s21的值是什么?SystemManagementPage admin = new SystemManagementPage(this, true, management);
内到达该行虽然您认为密码值是问题,但问题可能在admin.setVisible(true);
或其他任何地方。Admin != admin
passwordField
也有.getText()
方法吗?