Прежде всего, да, это назначение HW. Проблемы с рекурсивными факториалами в Java. Все, что я нахожу здесь и в другом месте, уже показывает, что я сделал правильно. Однако у меня возникают проблемы с дополнительным шагом. В основном мне нужен 1) Пользователь, чтобы ввести номер 2) Факториал, который должен быть рассчитан. 3) Если пользователь вводит что-либо, кроме символа или строки (а не int) для появления сообщения об ошибке. 4) Вопрос повторить до пользователь вводит «0» для выхода.Рекурсивная факториальная Java
Этапы 1 и 2 завершены. У меня проблемы с шагом 3. Кажется, я пропускаю оператор возврата, если пользователь вводит что-либо, кроме int, но я не могу точно понять, что именно.
Вот код до сих пор:
import java.util.Scanner;
public class Recursive
{
public static void main(String[] args)
{
int number; // To hold a number
char letter; // To hold a character
//Create a Scanner object for keyboard input
Scanner keyboard = new Scanner(System.in);
//Get a number from the user
System.out.print("Enter an integer to find the factorial: ");
number = keyboard.nextInt();
//Display the factorial
System.out.println(number + "! is " + factorial(number));
}
private static int factorial(int n)
{
if (n == 0)
return 1; // Base Case
else if (n > 0)
return n * factorial(n-1);
else (!(n>0))
return
System.out.println(number + "is invalid");
}
}
так окружать 'keyboard.nextInt();' с 'попробовать catch' о/и вы знаете, что они не ввели Int, если он попадает в исключение. – 3kings
Поскольку это ваш HW, я не буду публиковать фактический ответ. Но дадим вам какой-то намек. Вам понадобится цикл while, который будет продолжаться вечно. Тогда if/else. Если пользователь ввел 0, то перерыв петли еще нет. Затем вы проверяете числовоеобразование с помощью пользовательского ввода с помощью блока try/catch. В блоке catch введите сообщение об ошибке. Это должно помочь вам. – user109260
Мне кажется, что ваш вопрос не имеет ничего общего с факториальным расчетом и что заголовок вопроса и факториал являются просто шумом. Измените свой вопрос, чтобы уточнить, что вы на самом деле спрашиваете. – Giewev