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?
That has nothing to do with java actually. Rather you want the console you are displaying in to overwrite the text.
This can be done (in any language) by sending a carriage return (\r in Java) instead of a linefeed (\n in Java). So you never use println(), only print() if you want to do that. If you add a print("\r") before the very first print it should do what you want.
BTW it would be far more elegant and simple if you built the entire time in a string and then output it all at once :)
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With