开发者

Username & password string comparison problem

开发者 https://www.devze.com 2022-12-12 21:30 出处:网络
When I enter \"abcd\" in the passwordField, and use System.out.println(s21) - to chec开发者_运维技巧k the password - it shows \"[C@1372a1a\", why?

When I enter "abcd" in the passwordField, and use System.out.println(s21) - to chec开发者_运维技巧k the password - it shows "[C@1372a1a", why?

  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);
        }
    } 
    }


Your problem is here:

String s21 = s2.toString();

This is calling toString() on a char[], and isn't going to return anything useful. Instead,

String s21 = new String(s2);

Will give you a String composed of the characters in the array.

Other than that, I can't see any reason your code shouldn't work.


char[] s2 = passwordField.getPassword();
String s21 = s2.toString();

s2 is an Object of type char[]

s2.toString() returns the string representation of the s2 object, as implemented by java.lang.Object

... getClass().getName() + '@' + Integer.toHexString(hashCode())


My suggestions:

  • after performing String s21 = s2.toString(); what is the value of s21?
  • check with a debugger whether you reach that line inside the if condition SystemManagementPage admin = new SystemManagementPage(this, true, management); While you assume the password value is the problem, problem might be at admin.setVisible(true); or anywhere else.
  • Make sure your passwords are stored in clear text, since this is what you are trying to do here compare them directly and not their hash or encrypted value.
  • Make sure your using same case Admin != admin
  • Does your passwordField has a .getText() method as well?
0

精彩评论

暂无评论...
验证码 换一张
取 消