我对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)
无论我输入什么,每次运行它时,它总是相同的两个无意义的字符串.任何帮助将不胜感激.
你正在呼唤toString()一个char[].自动装箱,char[]你看到的字符串是它的参考名称.你必须将你转换char[]成一个String.
尝试 System.out.println(new String(dbPasswordOne));