如下程序中jc的作用是求数y的阶乘并输出,当y为负数时,在异常处理中输出:负数不求阶乘!。完善如下程序并上机验证,若不出异常提示,可多次运行本程序。
时间: 2024-11-15 10:25:45 浏览: 20
在Java中,你可以使用递归的方式实现阶乘功能,并利用try-catch块来捕获可能发生的`ArithmeticException`,因为阶乘运算在遇到0和负数时会抛出这个异常。下面是完善后的程序:
```java
import java.util.Scanner;
public class FactorialCalculator {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
System.out.println("请输入一个整数,计算其阶乘:");
try {
int y = input.nextInt();
// 检查输入是否为负数
if (y < 0) {
throw new ArithmeticException("负数不求阶乘!");
} else {
long factorial = calculateFactorial(y);
System.out.printf("数字 %d 的阶乘是 %d.\n", y, factorial);
}
} catch (ArithmeticException e) {
System.out.println(e.getMessage());
} finally {
input.close(); // 关闭扫描器以释放资源
}
}
// 递归计算阶乘
private static long calculateFactorial(int n) {
if (n == 0 || n == 1) {
return 1;
} else {
return n * calculateFactorial(n - 1);
}
}
}
```
在这个程序中,`calculateFactorial()`方法实现了阶乘的递归计算,而`main()`函数则通过`try-catch`结构处理用户输入的整数,如果输入是负数,会抛出异常并显示相应的错误信息。
你可以通过运行此程序,输入不同的整数,查看阶乘的计算结果或者错误消息,以便验证它的功能。
阅读全文