Почему моя консоль не печатает сразу предыдущую строку при использовании Java-сканера?JAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 Почему моя консоль не печатает сразу предыдущую строку при использовании Java-сканера?

Сообщение Anonymous »

У меня есть следующая простая программа на Java, которая запрашивает имя пользователя (через сканер) и пароль (через консоль). Примечание. Я НЕ запускаю это в IDE, такой как eclipse, поэтому эта ошибка не относится к моей ситуации (в частности, я запускаю это на PowerShell). Мы всегда можем предположить, что консоль существует.

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

import java.io.Console;
import java.util.Scanner;

public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
Console console = System.console();

System.out.print("User: ");
String user = sc.nextLine();
System.out.println("\r\n");
System.out.println("User entered was: " + user); //POINT 1

String password = new String(console.readPassword("Enter password: "));
System.out.println("\r\n");
System.out.println("Password entered: " + password); //POINT 2
}
}
Вот что я пробовал/что ожидалось:
Когда я запускаю программу, она выдает мне запрос
[Пользователь: ]как и ожидалось. Однако когда я нажимаю ENTER на клавиатуре, курсор перемещается в начало строки и НЕ переходит к «ТОЧКЕ 1». Когда я снова нажимаю Enter, мы переходим к «ПУНКТУ 1» и отображаем пользователя, как и ожидалось.

ПОСЛЕ ЗАПУСКА ПРОГРАММЫ консоль выглядит так:

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

[PS C:\..\Password] > java -cp "myBin" Main
User: foo|[ java -cp "myBin" Main
|[ java -cp "myBin" Main
User: foo

User entered was: foo
Enter password: |[ java -cp "myBin" Main
User: foo

User entered was: foo
Enter password: 

Password entered: bar
[PS C:\..\Password] > |[

Подробнее здесь: [url]https://stackoverflow.com/questions/79306074/why-is-my-console-not-immediately-printing-the-previous-line-when-using-a-java-s[/url]
Ответить

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

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

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

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

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