Reputation: 77778
Say I have a terminal with 30 lines of height.
And say I have a loop that outputs 100 lines of output
for(int i=0; i<100; i++){
System.out.println(i);
}
Is there a way I can output the first 30 lines, show text that says "Press enter to continue output...", show the next 30 lines when the user presses enter, etc?
I want to do this in the easiest manner possible. If I can use less
somehow, that would be excellent.
This needs to be implemented in the Java source code. The following is not a suitable solution:
java program | less'
Also, I will need to programmatically get the height of whatever terminal it is executed in.
Upvotes: 0
Views: 2345
Reputation: 1392
Either pass tput cols
to your java program as a command line arg or system property (java -DTermHeight=`tput cols`) or fetch it during runtime using Runtime.getRuntime().exec("tput cols")
Store that value in a variable height
. Now
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);
}
Upvotes: 1
Reputation: 22478
Within 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);
}
Upvotes: 2
Reputation: 63698
With less:
java program | less
or
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);
}
Upvotes: 2