Есть ли в 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);
}
}
Поможет ли этот ответ вашему вопросу stackoverflow.com/a/64812365/1832954 ?




Видите ли, в вашем коде, когда вы вводите данные, вам автоматически приходится нажимать ввод, и таким образом вы перейдете на следующую строку на консоли.
Поэтому, чтобы предотвратить это, я бы рекомендовал вам сначала ввести данные, а затем распечатать строку после всей обработки. например: 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);
}}
В следующий раз позаботьтесь о том, чтобы правильно отформатировать код самостоятельно. И в качестве совета: случайное количество пустых строк между каждым оператором не делает код волшебным образом более читабельным, даже наоборот.