java 计算并打印1! + 2! + 3! + ... + n!的值 0<n<200 输出结果注意边界
时间: 2023-10-01 19:05:44 浏览: 71
以下是一个计算并打印 1! + 2! + 3! + ... + n! 的Java代码,同时注意边界条件(0 < n < 200):
```java
import java.math.BigInteger;
import java.util.Scanner;
public class FactorialSum {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.print("请输入一个整数 n:");
if (scanner.hasNextInt()) {
int n = scanner.nextInt();
if (n > 0 && n < 200) {
BigInteger sum = BigInteger.ZERO;
for (int i = 1; i <= n; i++) {
BigInteger factorial = calculateFactorial(i);
sum = sum.add(factorial);
}
System.out.println("阶乘之和为:" + sum);
} else {
System.out.println("输入超出范围");
}
} else {
System.out.println("输入不是整数");
}
}
private static BigInteger calculateFactorial(int n) {
BigInteger factorial = BigInteger.ONE;
for (int i = 1; i <= n; i++) {
factorial = factorial.multiply(BigInteger.valueOf(i));
}
return factorial;
}
}
```
在这个示例中,我们首先使用 Scanner 类获取用户输入的整数 n。然后,我们检查输入是否为整数且在 0 到 200 的范围内。如果是,则计算阶乘之和并打印结果;否则,输出字符串 "输入超出范围" 或 "输入不是整数"。
为了处理非常大的阶乘值,我们使用了 BigInteger 类来存储和计算阶乘。BigInteger 类可以处理任意长度的整数。
我们使用一个辅助方法 calculateFactorial,用于计算给定整数的阶乘。在循环中,我们使用 BigInteger 的 multiply 方法逐步计算阶乘。
请注意,由于阶乘的增长速度非常快,因此限制了输入范围为 0 到 200。如果需要计算更大范围的阶乘之和,请根据需要进行适当的修改。
阅读全文