Страницы

Поиск по вопросам

среда, 22 января 2020 г.

Вывод данных в консоль, с ее очисткой

#java #консоль #обновление


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

boolean[][] dots = new boolean[5][5];

    Random randomBoolean = new Random();

    //Now i want to create a table with random boolean values
    //Eternal loop
    for (;;) {
        try {
            Thread.sleep(500);
            for (int i = 0; i < 5; i++)
            {

                for (int j = 0; j < 5; j++)
                    {
                    dots[i][j] = randomBoolean.nextBoolean();
                    System.out.print(dots[i][j] + "\t");
                    }
                    //Close the column
                System.out.println();
            }
           System.out.println();
        }
        catch (InterruptedException e)
        {
        }

    }


Что и куда мне нужно для этого добавить? 
Спасибо
    


Ответы

Ответ 1



Сама Java очищать консоль не умеет. Но есть небольшая библиотечка, позволяющая отправлять управляющие последовательности в любую ANSI-совместимую консоль - Jansi: import java.util.Random; import org.fusesource.jansi.AnsiConsole; public class Main { public static void main(String[] args) { AnsiConsole.systemInstall(); Random randomBoolean = new Random(); for (;;) { System.out.print("\u001b[2J"); System.out.flush(); try { for (int i = 0; i < 5; i++) { for (int j = 0; j < 5; j++) { System.out.print(randomBoolean.nextBoolean() + "\t"); } System.out.println(); } System.out.println(); Thread.sleep(500); } catch (InterruptedException e) {} } } }

Комментариев нет:

Отправить комментарий