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

10-06 14:35