2014-01-08 4 views
0

Я разрабатываю Java на NetBeans 7.4 и пытаюсь получить непрерывное обновление состояния в той же строке со следующим кодом.Получение непрерывного обновления состояния без фида

for (start=0; start<startLimit; ++start){ 
    System.out.print("Index="+start+" of "+startLimit+"\r"); 
    System.out.flush(); 
} 

У меня есть две проблемы.

  • Я получаю линию, которую я не хочу.
  • Выход не постоянно обновляется. Я работаю в режиме отладки и обычно получаю обновление в окне консоли, IDE, когда я ломаюсь. Кажется, что выход не сбрасывается с каждым циклом.
+4

запустить его за пределами вашей IDE затем, посмотреть, как он ведет себя там , –

+0

Как вы определяете, что получаете линейный фид? Если вы копируете/вставляете из среды IDE, возможно, что текстовое поле, из которого вы копируете, делает это, или, возможно, приложение, к которому вы копируете (например, если это Блокнот). Что касается вспышки, я не уверен, почему вы это делаете. Обычно вы не очищаете System.out PrintWriter. – CodeChimp

+0

В какой операционной системе вы работаете? Проверьте, что 'System.getProperty (« line.separator »)' возвращает. –

ответ

0

\ г (возврат каретки) вызывает строки (так же, как «\ п») в Windows,

+0

Я подумал, что верно следующее: «* Новые сочетания комбинаций строк для разных ОС: ** Windows ** -' \ r \ n', ** Linux ** - '\ n' и ** MacOS ** - это '\ r'. *" –

+0

Я думал, что это правда, но код OP работает для меня в командной строке Windows. – Boann

0

Вы могли бы лучше удачи с возврата на один символ вместо возврата каретки. Если консоль в среде IDE не интерпретирует возврат каретки правильно, это вероятно не будет интерпретировать забой правильно, но это что-то попробовать:

String status = ""; 
for (start=0; start<startLimit; ++start){ 
    for (int i = 0; i < status.length(); i++) System.out.print('\b'); 
    status = "Index=" + start + " of " + startLimit; 
    System.out.print(status); 
} 
+0

Я обнаружил, что он отлично работает с консоли DOS. – OtagoHarbour

Смежные вопросы