Почему Console.readPassword() вставляет строку?JAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 Почему Console.readPassword() вставляет строку?

Сообщение Anonymous »

Я создаю менеджер паролей и использую Console.readPassword() для ввода паролей без их отображения на экране. Однако я заметил интересное поведение этого метода. Всякий раз, когда я запускаю следующую программу в своей Powershell, между приглашением и распечаткой впоследствии вставляется строка.
Я нашел еще одно сообщение, в котором говорится, что Console.readPassword() не должен сделайте это, поэтому я дважды проверил свой код, сделал простой пример и все равно обнаружил то же поведение. Я также попробовал запустить тот же код в другой среде, а именно в терминале Intellij, и обнаружил, что он ведет себя по-другому. Powershell по-прежнему настаивает на добавлении строки, а терминал Intellij — нет, и я не знаю почему. Код, который я выполнил вместе с результатами, приведен ниже. В обоих примерах я ввел abcd в качестве пароля и нажал Enter.
Scratch.java

Код: Выделить всё

import java.io.Console;

public class Scratch {
public static void main(String[] args)
{
Console console = System.console();
char[] password = console.readPassword("Enter password: ");
System.out.println("new line");
}
}
Вывод при запуске Java Scratch в Powershell:

Код: Выделить всё

Enter password:

new line
Вывод при запуске Java Scratch из терминала в Intellij:

Код: Выделить всё

Enter password:
new line
Я не понимаю, почему один и тот же код должен вести себя по-разному. Любая помощь или указания очень ценятся.

Подробнее здесь: https://stackoverflow.com/questions/785 ... ing-a-line
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «JAVA»