Java обновляет одну строку вместо всего экрана - PullRequest
0 голосов
/ 09 октября 2019

Я хотел бы знать, как обновить First_name после сканирования firstName, а затем обновить Last_name после сканирования lastName. Я не знаю, как это сделать, не переписав всю строку.

public class Main {

    public static void main(String[] args) {
        Scanner scan = new Scanner(System.in);

        System.out.print("First_name ");
        System.out.println("Last_name");

        System.out.println("Enter First name: ");
        String firstName = scan.nextLine();

        System.out.println("Enter Last name: ");
        String lastName = scan.nextLine();
    }
}

1 Ответ

0 голосов
/ 10 октября 2019

Невозможно делать то, что вы хотите, динамически изменяя текст. Запись вывода с помощью System.out.println() запишет его на консоль, и после этого он будет вне вашего контроля. Это будет иметь место для любого языка.

Вы можете очистить консоль, прежде чем писать все заново, что сделает ее более динамичной. Это будет выглядеть примерно так:

public static void clearScreen() {  
    System.out.print("\033[H\033[2J");  
    System.out.flush();  
}  

Несмотря на то, что это не решит ваш первоначальный вопрос, я хочу использовать этот пост, чтобы указать на использование возврата каретки:

System.out.print("This is a test-string!");
System.out.println("\rThis string will overwrite that string!");

Возврат каретки в Java, используемый как \r, вернет курсор в начало строки. Это перезапишет исходную строку. Выход этого кода будет:

This string will overwrite that string!
...