Я пытаюсь сделать индикатор прогресса кроссплатформенной консоли в Java.Поэтому я использую метод System.out.printf для распечатки процента:
System.out.printf("\t%2.2f%%\b\b\b\b\b\b", percentage);
и помещаю это в цикл for.Проблема, с которой я сталкиваюсь, заключается в том, что она ничего не печатает, пока не закончится весь цикл for.Это пример программы, показывающий проблему:
public class Test {
public static void main(String[] args) {
for(int i =0; i<5000; i++){
System.out.printf("\b\b\b\b\b\b%2.2f%%", ((float) i/5000f)*100f);
System.out.flush();
}
}
}
Я думаю, что проблема как-то связана с оптимизацией компилятора, но я не уверен.Странно то, что System.out.println
печатает, когда работает цикл for.
Редактировать: я забыл добавить это к проблеме.Но я уже пытался очистить буфер.Это не имеет значения.Добавление %n
в конец моей строки printf работает, но начинается новая строка, мне действительно нужно повторно использовать текущую строку.
Все противоположные решения работают.Но они работают только в настоящих консолях.Не консоль netbeans или затмение.