How can I replace text that's been printed out on screen already in Java?

Viewed 13486

I'm new to Java and as an attempt to learn more I tried making a clock. It works perfectly, except for the fact that it prints on a new line every time a second changes. How do I make it so that I can replace the text that's already been printed out with the new time?

public class test {
    public static void main(String[] args) {
        test.clock();
    }
    public static void clock() {
        int sec = 0;
        int min = 0;
        int h = 0;
        for(;;) {
            sec++;
            if(sec == 60) {
                min++;
                sec = 0;
            } else if(min == 60) {
                h++;
                min = 0;
            } else if(h == 24) {
                h = 0;
            }
            try {
                Thread.sleep(1000);
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
            if(h < 10) {
                System.out.print("0"+h+":");
            } else {
                System.out.print(h+":");
            }
            if(min < 10) {
                System.out.print("0"+min+":");
            } else {
                System.out.print(min+":");
            }
            if(sec < 10) {
                System.out.println("0"+sec);
            } else {
                System.out.println(sec);
            }
        }       
    }
}

Here's my code. And here's an example of what I'm trying to do: I want to turn this: 00:00:00, into this: 00:00:01 (the code does this but it prints on a new line and doesn't delete the old time). The thing is that I want to get rid of the first one (00:00:00) and on the same line print the second one (00:00:01).

Is this possible in Java?

2 Answers

you can do System.out.print("\u001B[A"); make cursor go one line up. Here is how it works:

\u001B is escape character (27 ascii code) [ is after escape character the letter means what we want to do with cursor

A: cursor go up, B: cursor go down, C: cursor go right, D: cursor go left, H: go to left upper corner, M delete current line, T: scroll up, S: scroll down, J: remove all lines down to cursor

Warning this don't works on cmd or powershell.

Related