java求数y的阶乘并输出,当y为负数时,在异常处理中输出:负数不求阶乘!。
时间: 2024-10-23 11:12:10 浏览: 17
在Java中,你可以通过递归的方式来计算阶乘,同时使用try-catch语句块来处理负数的情况。下面是一个示例:
```java
public class Factorial {
public static void main(String[] args) {
try {
int y = askForNumber("请输入一个整数:");
if (y < 0) {
throw new IllegalArgumentException("负数不求阶乘!");
}
long factorial = calculateFactorial(y);
System.out.println("数字 " + y + " 的阶乘是:" + factorial);
} catch (IllegalArgumentException e) {
System.out.println(e.getMessage());
}
}
// 计算阶乘
private static long calculateFactorial(int num) {
if (num == 0 || num == 1) {
return 1;
} else {
return num * calculateFactorial(num - 1);
}
}
// 输入提示及异常处理
private static int askForNumber(String prompt) throws IllegalArgumentException {
Scanner scanner = new Scanner(System.in);
System.out.print(prompt);
int input = scanner.nextInt();
if (input < 0) {
throw new IllegalArgumentException();
}
return input;
}
}
```
在这个例子中,`calculateFactorial()`函数负责计算阶乘,如果输入的`y`小于0,`askForNumber()`会抛出`IllegalArgumentException`,在`main()`函数中捕获这个异常并输出相应的错误信息。
阅读全文