Как прокрутить вывод текста в Java?

Скажем, у меня есть терминал с 30 линиями высоты.

И скажем, у меня есть цикл, который выводит 100 строк вывода

for(int i=0; i<100; i++){
  System.out.println(i);
}

Можно ли вывести первые 30 строк, показать текст с надписью "Нажмите ввод, чтобы продолжить вывод...", показать следующие 30 строк, когда пользователь нажмет ввод, и т. Д.?

Я хочу сделать это как можно проще. Если я могу использовать less так или иначе, это было бы отлично.


Обновить

Это должно быть реализовано в исходном коде Java. Следующее не является подходящим решением:

java program | less'

Кроме того, мне нужно программно получить высоту терминала, в котором он выполняется.

3 ответа

Решение

Либо пройти tput cols в вашу Java-программу в виде командной строки arg или системного свойства (java -DTermHeight=`tput cols`) или извлеките ее во время выполнения, используя Runtime.getRuntime().exec("tput cols")

Сохраните это значение в переменной height, Сейчас

   height = (height==0?30:height);
    for(int i=1; i<=100; i++) {
        if (i % height== 0) {
            System.out.println("Press enter to continue output...");
            System.in.read();
        }
        System.out.println(i);
    }

С меньшим:

java program | less

или же

for(int i=0; i<100; i++){
    if( i % 30 == 0) {
       System.out.println("Press enter to continue output...");
       System.in.read();
    }    
    System.out.println(i);   
}

В Java:

BufferedReader r = new BufferedReader(new InputStreamReader(System.in));

for(int i=0; i<100; i++){
    if (i % 30 == 0) {
        System.out.println("Press enter to continue output...");
        r.readLine();
    }
    System.out.println(i);
}
Другие вопросы по тегам