9

私はJavaが初めてで、もっと学ぶために時計を作ってみました。秒が変わるたびに新しい行に印刷されるという事実を除いて、それは完全に機能します。すでに印刷されているテキストを新しい時刻に置き換えるにはどうすればよいですか?

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

これが私のコードです。そして、これが私がやろうとしていることの例です: this: を this: に変えたいです00:00:00(00:00:01コードはこれを行いますが、新しい行に出力され、古い時間を削除しません)。00:00:00問題は、最初のもの ( ) を取り除き、同じ行に 2 番目のもの ( )を出力したいということです00:00:01

これはJavaで可能ですか?

4

2 に答える 2

20

それは実際にはJavaとは何の関係もありません。むしろ、表示しているコンソールでテキストを上書きする必要があります。

これは、改行 (Java では \n) の代わりにキャリッジ リターン (Java では \r) を送信することで (任意の言語で) 実行できます。したがって、println() は使用せ、必要な場合のみ print() を使用してください。最初の印刷の前に print("\r") を追加すると、必要なことが行われます。

ところで、時間全体を文字列で構築し、一度にすべて出力すると、はるかにエレガントでシンプルになります:)

于 2012-08-02T12:53:25.767 に答える