0

コマンドラインであるmp3プレーヤーを実装しています。

このようにmp3の長さを表示したい

Now Playing :: hello.mp3 Duration :: 1.20 

しかし、 System.out.println を使用すると表示されます

Now Playing :: hello.mp3 Duration :: 1.20 
Now Playing :: hello.mp3 Duration :: 1.21 
Now Playing :: hello.mp3 Duration :: 1.22 
Now Playing :: hello.mp3 Duration :: 1.23 
Now Playing :: hello.mp3 Duration :: 1.24 
Now Playing :: hello.mp3 Duration :: 1.25
..... 

基本的に、期間はスレッドによって更新されます。1 行で表示したいのですが、つまり、期間は 1 行で更新する必要があります。見ましたFlushable interfaceがわかりませんでした。私を助けてください

ここに私のスレッドがあります

while(p.getPlayer().isComplete() == false){
String bOutput = "\r Duration ::" + (int) ((p.getPlayer().getPosition() / (1000*60)) % 60) + " : " + (int) (p.getPlayer().getPosition() / 1000) % 60;
//p.getBufferedOutputStream().write(bOutput.getBytes());
//p.getBufferedOutputStream().flush();
System.out.println(bOutput);

Thread.sleep(1000);
}
4

2 に答える 2

0
while(p.getPlayer().isComplete() == false){
String bOutput = "Duration ::" + (int) ((p.getPlayer().getPosition() / (1000*60)) % 60) + " : " + (int) (p.getPlayer().getPosition() / 1000) % 60;
System.out.println(bOutput+"\r");

Thread.sleep(1000);
}

これは私の問題を解決します。

注:で効果が見られません。Eclipse Console実行するとCMD、機能します。

于 2012-12-15T09:11:01.487 に答える
0

println何かが複数回呼び出されていることは明らかです。複数の行が必要ない場合は、そうならないようにコードを変更してください。

これは、スレッド化や の「障害」ではprintlnなく、フラッシュとは関係ありません。問題はあなたのコードのロジックにあります...しかし、あなたがそれを私たちに示していないので、これ以上は言えません.

于 2012-12-15T08:24:00.900 に答える