Ввод и вывод одной и той же строки в Java

Есть ли в Java метод, гарантирующий, что когда пользователь вводит значение, последующий вывод появляется в той же строке, непосредственно рядом с приглашением ввода, без перехода на новую строку? Другими словами, можем ли мы добиться настройки, в которой ввод и вывод отображаются в одной строке?

Ожидания:

Factorial of 5: 120

Реальность:

Factorial of 5
: 120

Вот код для справки:

public class Main {

  public static void main(String[] args) {
    Scanner s = new Scanner(System.in);
    int total = 1;
    int i;
    System.out.print("Factorial of ");
    int input = s.nextInt();
    for (i = 1; i <= input; i++) {
      total *= i;
    }
    System.out.print(": " + total);
  }
}

В следующий раз позаботьтесь о том, чтобы правильно отформатировать код самостоятельно. И в качестве совета: случайное количество пустых строк между каждым оператором не делает код волшебным образом более читабельным, даже наоборот.

Chaosfire 29.03.2024 08:30

Поможет ли этот ответ вашему вопросу stackoverflow.com/a/64812365/1832954 ?

Izanagi 29.03.2024 08:48
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
0
2
141
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Видите ли, в вашем коде, когда вы вводите данные, вам автоматически приходится нажимать ввод, и таким образом вы перейдете на следующую строку на консоли.

Поэтому, чтобы предотвратить это, я бы рекомендовал вам сначала ввести данные, а затем распечатать строку после всей обработки. например: System.out.print("Факториал из " + "" + вход + ": " + итого);

или вы можете использовать Runtime.getRuntime().exec("cls"); после ввода данных ваш экран очистится.

Дай мне знать, если тебе еще понадобится помощь.

Ответ принят как подходящий

Когда вы вводите 5, вы нажимаете Enter, поэтому появляется новая строка;

Этот код решит вашу проблему:

public class Main {

public static void main(String[] args) {
    Scanner s = new Scanner(System.in);
    int total = 1;
    System.out.print("Factorial of ");
    int input = Integer.valueOf(s.next());
    for (int i = 1; i <= input; i++) {
        total *= i;
    }

    int count = 1;
    System.out.print(String.format("\033[%dA",count)); // Move up
    System.out.print("Factorial of ");
    System.out.print(input);

    System.out.print(": " + total);
}}

Другие вопросы по теме

Похожие вопросы

Как я могу дождаться, пока весь предмет будет израсходован
NPE: невозможно распаковать нулевое значение
Как вернуть реальный объект из макетной конструкции с помощью Mockito
Почему невозможно изменить ArrayList при переборе его с помощью расширенного цикла for, тогда как это можно сделать с помощью обычного цикла for?
Задача отмены Java, выполняющая запрос Oracle через JDBC - соединение разорвано из-за SQLSTATE (08006), ErrorCode (17002). Ошибка ввода-вывода: чтение сокета прервано
Как получить метку, указанную в аннотации с возможностью повторной попытки весной, на уровне класса в MethodInvocateRetryListenerSupport?
Как отличить цвет фона от цвета текста?
Время получения кэша Apache Ignite слишком велико
Java-калькулятор не работает. Нужна помощь в устранении неполадок (для начинающих в области информатики)
Стоит ли получать доступ к данным по блокам на современных ОС/оборудовании?