java求阶乘并捕获三种异常
时间: 2023-10-18 18:04:17 浏览: 100
下面是一个 Java 程序,可以求阶乘并捕获三种异常:
```java
import java.util.Scanner;
public class Factorial {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.print("请输入一个整数:");
int n = scanner.nextInt();
try {
int result = factorial(n);
System.out.println(n + " 的阶乘是:" + result);
} catch (IllegalArgumentException e) {
System.out.println(e.getMessage());
} catch (ArithmeticException e) {
System.out.println(e.getMessage());
} catch (Exception e) {
System.out.println("未知异常:" + e.getMessage());
}
}
public static int factorial(int n) throws IllegalArgumentException, ArithmeticException {
if (n < 0) {
throw new IllegalArgumentException("输入的整数必须大于等于 0。");
}
if (n > 12) {
throw new ArithmeticException("输入的整数太大了,超出了 int 类型的范围。");
}
int result = 1;
for (int i = 2; i <= n; i++) {
result *= i;
}
return result;
}
}
```
这个程序首先从标准输入读取一个整数,然后调用 `factorial` 方法计算该整数的阶乘。在 `factorial` 方法中,如果输入的整数小于 0,就抛出一个 `IllegalArgumentException` 异常;如果输入的整数大于 12,就抛出一个 `ArithmeticException` 异常;否则就计算阶乘并返回结果。
在 `main` 方法中,我们使用了三个 `catch` 语句分别捕获 `IllegalArgumentException`、`ArithmeticException` 和其他异常。对于前两种异常,我们只需要打印异常的消息即可;对于其他异常,我们打印一个通用的错误消息。
阅读全文