Я делаю программу командной строки Java.
Как я могу изменить содержимое уже отображаемой строки?
Так, например, я мог бы отобразить:
Статус: 0%
Статус: 2%
...
Статус: 50%
За исключением того, что вместо того, чтобы продолжать продвигать каждую новую строку, я просто изменяю содержимое существующей строки, так что% done меняется на месте.
Я видел, как некоторые консольные программы делали это раньше, так как я могу сделать это в java?
2 ответа
В большинстве случаев вы можете выводить возврат каретки (\r
), а не новую строку (\n
). Это зависит от поддерживающего его терминала, что в большинстве случаев так и есть. \r
перемещает курсор обратно в начало строки.
РЕДАКТИРОВАТЬ: Очевидно, при этом используйте System.out.print
, а не System.out.println
(или просто используйте простую, а не ln
форму метода вывода, который вы используете) - поскольку Суффикс ln
означает, что после вашего текста автоматически ставится новая строка.
Примере:
for (n = 10000; n < 10010; ++n) {
System.out.print(String.valueOf(n) + "\r");
}
System.out.println("Done");
Когда это закончится, вы, вероятно, увидите это на экране консоли:
Done0
... поскольку «Готово» короче, чем самая длинная предыдущая выводимая вами информация, и поэтому не полностью перезаписывает его (отсюда 0 в конце, оставшийся от «10010»). Итак, урок таков: отслеживайте самое длинное, что вы пишете, и перезаписывайте его пробелами.
Взгляните на этот пример < / сильный>.
Рабочий код:
public class progress {
public static void main(String[] args) throws InterruptedException {
for (int i = 0; i <= 100; i++) {
Thread.sleep(30);
System.out.print("\rSTATUS: "+i+" % " );
}
}
}
Совет: для получения дополнительных сведений о Google - индикатор выполнения консоли Java
Похожие вопросы
Новые вопросы
java
Java - это язык программирования высокого уровня. Используйте этот тег, если у вас возникли проблемы с использованием или пониманием самого языка. Этот тег редко используется отдельно и чаще всего используется вместе с [spring], [spring-boot], [jakarta-ee], [android], [javafx], [hadoop], [gradle] и [maven].
\b
для «удаления» заменяемых битов вместо замены всей строки на\r
.\r
помещает курсор в начало строки ("для большинства терминалов"), поэтому все, что вы добавляете после него, будет отображаться в начале строки.