sorunuza cevap için, sadece eski üzerine yazmak için bir yolu yoktur IntelliJ konsol için ilerleme çubuğu ve yeni bir çıktı. Windows komut satırında (ve Unix sistemini kabul ediyorum), ilerleme çubuğunu aşağıdaki gibi yazabilir ve üzerine yazabilirsiniz (yaptığınız gibi System.out.print
ve '\r'
kullanarak). Komut satırından itibaren
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();
}
}
}
}
: Ayrıca ilerleme çubuğunun bir daha okunabilir bir sürümünü yapma (eğer genişletmek ve değerini MAX_PIPE_CHAR
değiştirerek istediğiniz gibi kısaltmak sağlar
java Tester
Sen almak Kendinin üzerine yazılan ilerleme çubuğu (Windows üzerinde test edilmiştir)
Ve "şimdi" ne artırıldığını biliyor muydunuz? Veya bu yöntem çağrıldığında mı? Ayrıca, tam olarak ne ile yapmaya çalışıyorsunuz? float num = (float) (şimdi/(a ll * 0.1); int current = (int) (num/1); 'Mantık hatası çığlığı. – SGM1
Bu işlevi döngülerde kullanıyorum ve "şimdi" döngü adımı. Ve float num = (float) kullanıyorum (şimdi/(tümü * 0.1); int current = (int) ', ilerleme çubuğunun mevcut konumunu almak için mevcut döngünün konumunu kullanıyorum ve şu anki adımı atıyorum: –
, neden şu anki 'int akım = (int) (((float) (şimdi * MAX_PIPE_CHAR))/all);'? Boru karakteri '' 'bilmediyse, 0.1 çok keyfi görünüyor. – SGM1