0

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.


Update

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.

3 Answers 3

2

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);   
}
Sign up to request clarification or add additional context in comments.

2 Comments

can you elaborate on how I'd use tput cols? I'm sort of a Java noob.
@macek: Get the height of the screen from tput and pass it as parameter to java apps. Read man tput.
2

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

1 Comment

here 30 is statically coded. How can I dynamically get the height of the terminal?
1

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

2 Comments

Marking this as accepted answer for providing means of getting terminal height using Java. Giving +1 to other answers.
I am always getting '80' when running tput cols in Java, even though the same command in my terminal gives me a greater value. I am using JDK 1.7u51

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.