Java控制台readPassword()返回无意义的字符

Ian*_*ght 1 java passwords io

我对Java的Console对象有一个荒谬的困难,尤其是readPassword()方法.

我有当前代码读取密码,两次,并循环,直到两个密码相同:

do {
    dbPasswordOne = userInput.readPassword("Enter a password for the bookstall: ");
    System.out.println(dbPasswordOne.toString());
    dbPasswordTwo = userInput.readPassword("Re-enter the password: ");
    System.out.println(dbPasswordTwo.toString());
} while (!Arrays.equals(dbPasswordOne, dbPasswordTwo));
Run Code Online (Sandbox Code Playgroud)

在我看来,这应该工作正常(打印只是为了调试目的.但是,这是我在Linux终端中得到的输出:

Enter a password for the bookstall: 
[C@9e4acce
Re-enter the password: 
[C@40d0d75
Run Code Online (Sandbox Code Playgroud)

无论我输入什么,每次运行它时,它总是相同的两个无意义的字符串.任何帮助将不胜感激.

tob*_*yer 9

你正在呼唤toString()一个char[].自动装箱,char[]你看到的字符串是它的参考名称.你必须将你转换char[]成一个String.

尝试 System.out.println(new String(dbPasswordOne));

  • http://docs.oracle.com/javase/6/docs/api/java/io/Console.html#readPassword() (4认同)
  • 不需要新的String(),而且autoboxing与它无关. (2认同)