我必须计算一个数字的阶乘。事实上,0 的阶乘是 1。所以我也在函数中包含了这种情况。这是代码:
import java.util.*;
public class Factorial {
static int fact(int n) {
int result;
if (n == 0 || n == 1)
return 1;
result = fact(n - 1) * n;
return result;
}
public static void main(String args[]) {
int i, fact = 1;
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
fact = fact(n);
System.out.println(fact);
}
}
但如果我将输入设为 0,则会引发一些异常
在 java.util.Scanner.next(Scanner.java:1485) 在 java.util.Scanner.throwFor(Scanner.java:862) 在 java.util.Scanner.nextInt( Scanner.java:2117) 在 java.util.Scanner.nextInt(Scanner.java:2076) 在 Factorial.main(Factorial.java:14)
如何解决这种情况?
编辑:
- 我已经改变了例外。所有的道歉是的代码甚至不是 26 行。在此处仅发布代码之前,我已将一些代码作为注释放在上面。
- 这不是重复的。事实上,我想知道为什么它不接受 0 作为输入。它适用于所有其他输入。
- 我使用在线编译器https://www.tutorialspoint.com/compile_java_online.php
- 与 PC JDK 1.7 的 Java 编译器一起工作正常,但在在线 IDE 上引发异常。