Есть задача, написать рекурсивную процедуру для вывода на экран цифр натурального числа в обратном порядке. Я её решил, но хочу что бы на выходе из рекурсии получалось целое число. Вот, что я сейчас имею.
public class MyClass {
public static int consoleInputFirstNumber() {
Scanner scan = new Scanner(System. in );
System.out.print("Enter number: ");
if (scan.hasNextInt()) {
return scan.nextInt();
} else {
System.out.println("Entered not number. Try again.");
return consoleInputFirstNumber();
}
}
public static void numberReverseOrder(int number) {
if (number == 0) {
return;
} else {
System.out.print(number % 10);
numberReverseOrder(number / 10);
}
}
public static void consoleOutput(int result) {
System.out.println(result);
}
public static void main(String[] args) {
int input = consoleInputFirstNumber();
numberReverseOrder(input);
}
}
Кто знает, что нужно что бы решить мою проблему дайте подсказку или напишите решение. Заранее спасибо.
Ответ
Вообще-то ваша программа вроде как работает. Она только для 0 ничего не выводит, поэтому непонятно, чего вы хотите. Но вот для разнообразия моё решение.
Проще такую задачу решать, преобразовав число в строку и сведя её к выводу перевёрнутой строки. Кроме того я бы разделил преобразование строки к перевёрнутой и собственно вывод. Вот как вашу задачу можно решить рекурсивно:
import java.util.Scanner;
public class RecursiveReverse {
public static String reverse(String str) {
return str.isEmpty() ? "" : reverse(str.substring(1)) + str.charAt(0);
}
public static void main(String[] args) {
try (Scanner scan = new Scanner(System.in)) {
System.out.print("Enter number: ");
System.out.println("Reversed: " + reverse(String.valueOf(scan.nextInt())));
}
}
}
Комментариев нет:
Отправить комментарий