Как обновить вывод консоли в Java? - PullRequest
0 голосов
/ 21 мая 2018

Мне нужно обновить консоль.

Вот пример кода:

public class Tester {
    public static void main(String[] args) {
        System.out.print("abcd\n");
        System.out.print("efgh");
        System.out.print("\r\r\rijkl");
}
}

Мой вывод:

abcd
ijkl

Ожидаетсявывод:

ijkl
efgh

Я также пробовал это:

        System.out.print("abcd\n");
        System.out.print("efgh\n");
        System.out.print("\033[0;0H");//\033[0;0H is an escape sequence to positioning the console cursor(Referred From Internet).
        System.out.print("ijkl");

Для приведенного выше кода вывод:

abcd
efgh
←[0;0Hijkl

Пока я пытаюсь онлайн-компиляторКод выше работает нормально. см. Здесь

Но это не работает в Windows и Linux OS

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

Спасибо всем.

Ответы [ 2 ]

0 голосов
/ 21 мая 2018

Чтобы увидеть разницу между \ r и \ n, вы должны запустить свой код из командной строки.Консоль Eclipse (и аналогичная для других IDE) не имитирует поведение полного терминала и переместится на следующую строку для \ r и \ n.Однако в командной строке \ r только переместит курсор назад к началу текущей строки.

0 голосов
/ 21 мая 2018

Вам нужно узнать разницу между буквенным символом \n и \r.Это зависит от системы к системе.Хотя оба они используются в одинаковом смысле, все же они работают по-разному.\r работает как возврат каретки.Он просто перемещает курсор назад к началу строки.В вашем случае это точно имитирует тот же сценарий.

Когда компилятор компилирует этот фрагмент кода System.out.print("abcd\n"); // выводит abcd на консоль.System.out.print("efgh"); // печатает efgh на консоли.System.out.print("\r\r\rijkl") // берет курсор в начале строки, переопределяет предыдущие символы и печатает ijkl на консоли соответственно.Итак, если вы используете \r, попробуйте использовать `System.out.println ', так как он будет печатать литералы в новой строке, хотя он все равно сначала переместит курсор в начало строки.Но он будет неявно печатать символы во второй строке.

Для получения дополнительной информации см. этот вопрос

...