【发布时间】:2016-01-28 23:43:39
【问题描述】:
首先,是的,这是一项硬件任务。在 Java 中遇到递归阶乘问题。我在这里和其他地方找到的所有东西都已经告诉我我所做的是正确的。但是,我遇到了额外步骤的问题。基本上我需要的是 1)用户输入一个数字 2)要计算的阶乘 3)如果用户输入除字符或字符串(而不是 int)以外的任何内容以显示错误消息 4)重复的问题,直到用户输入“0”退出。
第 1 步和第 2 步我已完成。我在第 3 步遇到问题。如果用户输入除 int 以外的任何内容,我似乎错过了 return 语句,但我似乎无法弄清楚到底是什么。
这是目前为止的代码:
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");
}
}
【问题讨论】:
-
所以用
try/catch语句包围keyboard.nextInt();,你知道如果遇到异常他们没有输入int。 -
由于这是您的硬件,我不会发布实际答案。但会给你一些提示。您将需要一个永远持续的 while 循环。然后是 if/else 语句。如果用户输入 0 则打破循环,否则不。然后,您通过使用 try/catch 块包围用户输入来检查 numberformatexception。在 catch 块中,输入错误消息。这应该可以帮助你。
-
在我看来,您的问题与阶乘计算无关,问题标题和阶乘代码只是噪音。请编辑您的问题以澄清您的实际问题。