Код: Выделить всё
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]
Мобильная версия