我必须计算一个数字的阶乘。因为 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,则会引发一些异常
线程“main”中的异常 java.util.NoSuchElementException at java.util.Scanner.throwFor(Scanner.java:862) at java.util.Scanner.next(Scanner.java:1485) at 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 上引发异常。
三国纷争
相关分类