をあなたの質問に答えるために、単に古いものを上書きする方法はありませんプログレスバーを開き、新しいものをIntelliJコンソール用に出力します。 Windowsのコマンドライン(そして私はUnixシステムと仮定している)では、次のようにプログレスバーを表示して上書きすることができます(System.out.print
と'\r'
を使用しています)。 コマンドラインから
public class Tester {
static void testProgress(int all, int now) {
final int MAX_PIPE_CHAR = 10;
float num = now * MAX_PIPE_CHAR * 1.01f; // 1.01f to account for any round off
int current = (int) (num/all);
int rest = MAX_PIPE_CHAR - current;
System.out.print("\r[");
for (int a = 1; a <= current; a++) {
System.out.print("|");
}
for (int b = 1; b <= rest; b++) {
System.out.print(" ");
}
System.out.print("]");
}
public static void main (String args[]){
for (int i = 0; i <= 100; i++) { // to test, taken from Aleksandar (slight modification)
testProgress(100, i);
try {
Thread.sleep(30);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}
:また、あなたの進行状況バーのより読みやすいバージョンを作る(あなたが広げる、および値MAX_PIPE_CHAR
を変更することで、あなたが好きなように短縮することができます
java Tester
あなたが得ます(Windows上でテストされた)プログレスバー。
"今"がインクリメントされているか、このメソッドが呼び出されたときに知っていたのですか?また、float num =(float) (今/( 11 * 0.1)。 int current =(int)(num/1); 'それは論理エラーを叫んでいます。 – SGM1
私はこの関数をサイクルで使用し、 "今"はサイクルのステップです。そして私は現在のステップとサイクルのleightを使ってプログレスバーの現在の位置を取得するために 'float num =(float)(now /(all * 0.1); int current =(int)'を使用しています) –
Soなぜあなたが知っていない場合には '|'であるのですか?0.1は非常に恣意的なようです。 – SGM1