用JAVA写从键盘终端输入1到100之间的整数m,计算1!+2!+...+m!结果。 要求: 1、对输入值的合法性做判断; 2、用for循环和while循环分别实现;
时间: 2024-09-21 20:01:28 浏览: 33
在Java中,你可以通过以下步骤编写一个程序来计算1到m之间的所有整数的阶乘之和,同时检查输入值m的有效性:
首先,我们需要导入`java.util.Scanner`类来处理用户从键盘输入:
```java
import java.util.Scanner;
```
然后,我们可以创建一个方法来计算阶乘并进行有效性检查:
```java
public static long factorial(int n) {
if (n < 0) {
throw new IllegalArgumentException("Input must be a non-negative integer");
}
if (n == 0 || n == 1) {
return 1;
} else {
return n * factorial(n - 1);
}
}
```
接下来,我们使用for循环和while循环分别实现这个功能:
**For循环版本:**
```java
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.println("请输入一个1到100之间的整数:");
int m;
try {
m = scanner.nextInt();
if (m >= 1 && m <= 100) {
long sum = 0;
for (int i = 1; i <= m; i++) {
sum += factorial(i);
}
System.out.printf("1! + 2! + ... + %d! 的和是: %d%n", m, sum);
} else {
System.err.println("输入无效,必须在1到100之间!");
}
} catch (Exception e) {
System.out.println("输入错误,请输入一个整数。");
} finally {
scanner.close();
}
}
```
**While循环版本:**
```java
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.println("请输入一个1到100之间的整数:");
int m;
while (!scanner.hasNextInt()) {
System.out.println("输入无效,请输入一个整数。");
scanner.next(); // 清除非法输入
}
m = scanner.nextInt();
if (m >= 1 && m <= 100) {
long sum = 0;
int i = 1;
while (i <= m) {
sum += factorial(i++);
}
System.out.printf("1! + 2! + ... + %d! 的和是: %d%n", m, sum);
} else {
System.err.println("输入无效,必须在1到100之间!");
}
scanner.close();
}
```
以上两个版本都会提示用户输入有效的整数,并计算1到m的阶乘和。