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));
在我看来,这应该可以正常工作(打印仅用于调试目的。但是,这是我在Linux终端中获得的输出:
Enter a password for the bookstall:
[C@9e4acce
Re-enter the password:
[C@40d0d75
每次我运行它时,它们总是相同的两个废话字符串,而不管我输入了什么。任何帮助将不胜感激。
最佳答案
您正在toString()
上呼叫char[]
。该框自动装箱char[]
,并且您看到的字符串是其引用名称。您必须将char[]
转换为String
。
尝试System.out.println(new String(dbPasswordOne));