Java printf не печатает

Я пытаюсь сделать кроссплатформенный индикатор прогресса консоли на 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 или eclipse.

5
задан Daan Pape 24 March 2012 в 15:38
поделиться