Java输入一个正整数,求该数的阶乘。要求能捕捉输人数字格式异常(NumberFormat Exception),即当输入字符不是正整数时,能出现提示信息“输人数据格式不对,请重新输人- 个正整数”。
时间: 2025-02-23 11:31:35 浏览: 34
在Java中,你可以使用Scanner类获取用户输入,然后利用递归的方式来计算阶乘。为了捕获输入格式异常,你需要在读取输入时添加try-catch块。下面是一个示例程序:
```java
import java.util.Scanner;
import java.text.NumberFormatException;
public class FactorialCalculator {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int number = 0;
// 无限循环直到获取到有效的输入
while (true) {
try {
System.out.println("请输入一个正整数:");
if (scanner.hasNextInt()) {
number = scanner.nextInt();
if (number > 0) {
break; // 如果输入的是正整数,则跳出循环
} else {
System.out.println("输入数据格式不对, 请重新输入一个正整数.");
}
} else {
System.out.println("输入数据格式不对, 请重新输入一个正整数.");
}
} catch (NumberFormatException e) {
System.out.println("输入数据格式不对, 请重新输入一个正整数.");
scanner.next(); // 清除错误的输入
}
}
// 计算阶乘并打印结果
long factorial = calculateFactorial(number);
System.out.println("该数的阶乘是: " + factorial);
scanner.close();
}
private static long calculateFactorial(int num) {
if (num == 0 || num == 1) {
return 1;
} else {
return num * calculateFactorial(num - 1);
}
}
}
```
在这个程序中,如果用户输入了非整数或者负数,catch块会捕获NumberFormatException并提示用户重新输入。一旦得到正确的正整数,就会计算其阶乘并显示结果。
阅读全文
相关推荐











