假设某个类中有一个long factorial(int n)方法,该方法是求n!,要求对参数作检查。当0<=n<=100时,方法算出n!,否则抛出一个参数异常(ArgumentException),请你根据上述描述,请编程实现。
时间: 2024-02-03 18:14:49 浏览: 72
以下是 Java 实现:
```java
public class Factorial {
public static long factorial(int n) throws ArgumentException {
if (n < 0 || n > 100) {
throw new ArgumentException("参数应在 0 到 100 之间");
}
long result = 1;
for (int i = 2; i <= n; i++) {
result *= i;
}
return result;
}
}
class ArgumentException extends Exception {
public ArgumentException(String message) {
super(message);
}
}
```
在该类中,我们定义了一个 `factorial` 方法,它接受一个整数参数 `n`,并返回 `n!` 的值。在方法中,我们首先进行参数检查,如果 `n` 不在 0 到 100 之间,则抛出一个自定义的 `ArgumentException` 异常。如果参数检查通过,则使用一个循环来计算 `n!` 的值,并将其返回。
我们还定义了一个 `ArgumentException` 类来表示参数异常,它继承自 `Exception` 类。在 `ArgumentException` 类中,我们只需要实现一个带有字符串参数的构造函数即可。
我们可以在其他类中使用 `Factorial` 类中的 `factorial` 方法来计算任意整数的阶乘,如下所示:
```java
public class Main {
public static void main(String[] args) {
try {
System.out.println(Factorial.factorial(5)); // 输出:120
System.out.println(Factorial.factorial(10)); // 输出:3628800
System.out.println(Factorial.factorial(101)); // 抛出 ArgumentException 异常
} catch (ArgumentException e) {
System.out.println(e.getMessage());
}
}
}
```
在上面的代码中,我们首先调用 `Factorial.factorial` 方法来计算 5 和 10 的阶乘,并将结果输出到控制台。然后,我们尝试计算 101 的阶乘,这会导致 `Factorial.factorial` 方法抛出一个 `ArgumentException` 异常,我们通过 `e.getMessage()` 方法获取异常消息并将其输出到控制台。
阅读全文