0

假设我有一个高度为 30 行的终端。

假设我有一个输出 100 行输出的循环

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

有没有办法可以输出前 30 行,显示“按 Enter 继续输出...”的文本,在用户按 Enter 时显示接下来的 30 行等?

我想以最简单的方式做到这一点。如果我能less以某种方式使用,那就太好了。


更新

这需要在 Java 源代码中实现。以下不是合适的解决方案:

java program | less'

此外,我需要以编程方式获取执行它的任何终端的高度。

4

3 回答 3

2

:_

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);   
}
于 2011-10-13T07:11:54.420 回答
2

在 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);
}
于 2011-10-13T07:12:47.873 回答
1

tput cols要么作为命令行参数或系统属性(java -DTermHeight=`tput cols`)传递给你的 java 程序,要么在运行时使用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);
    }
于 2011-10-13T07:49:04.157 回答