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

244
22 октября 2017, 19:58

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

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)
        {
        }
    }

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

Answer 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) {}
        }
    }
}
READ ALSO
Инициализация локальных переменных

Инициализация локальных переменных

Как корректнее всего инициализировать пустые локальные переменные разных типов? Например,

238
как удалить по ID (deleteById(long id) и delete(Developer developer)

как удалить по ID (deleteById(long id) и delete(Developer developer)

Дана сущность Developer Необходимо реализовать консольное приложение со следующим функционалом:

200
Не получается обратиться к базе данных на сервере

Не получается обратиться к базе данных на сервере

Проект vaadin+h2+hibernate+tomcat пытаюсь обратиться к базе данных, но на этапе конфигурации выдает ошибку

224