Страницы

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

вторник, 12 марта 2019 г.

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

Доброго дня, коллеги. Есть один код, который выводит в консоль таблицу случайных булевых значений. Все бы ничего, но мне нужно, чтобы значения не выводились потоком, одно за другим, а изменялись в реальном времени. Те по аналогии с часами в консоли: время должно не писаться в новой строке с каждой новой секундой, а должно находиться, и обновляться в изначальной.
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) { }
}
Что и куда мне нужно для этого добавить? Спасибо


Ответ

Сама 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) {} } } }

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

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