编程实现如下功能: (1)定义函数factorial()实现求一个正整数的阶乘值; (2)定义函数check_data()实现判断一个数是否为正整数; 要求在调用求阶乘函数factorial()前先调用函数check_data(),确定为正整数才求该数的阶乘值并输出,否者要求用户重新输入,直到满足要求为止。
时间: 2024-02-28 07:55:40 浏览: 66
以下是Java代码实现:
```java
import java.util.Scanner;
public class Factorial {
public static int factorial(int n) {
if (n == 1) {
return 1;
} else {
return n * factorial(n-1);
}
}
public static boolean checkData(int n) {
if (n > 0) {
return true;
} else {
return false;
}
}
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int n;
while (true) {
System.out.print("请输入一个正整数:");
try {
n = sc.nextInt();
if (checkData(n)) {
System.out.println(n + "的阶乘是" + factorial(n));
break;
} else {
System.out.println("输入的数不是正整数,请重新输入!");
}
} catch (Exception e) {
System.out.println("输入的不是整数,请重新输入!");
sc.nextLine();
}
}
sc.close();
}
}
```
首先定义了一个`factorial()`函数,用于求一个正整数的阶乘值。
然后定义了一个`checkData()`函数,用于判断一个数是否为正整数。
在主程序中,通过一个无限循环,不断要求用户输入一个数,然后调用函数`checkData()`判断是否为正整数,如果是,则调用函数`factorial()`求该数的阶乘值并输出,然后跳出循环;否则提示用户重新输入。注意,为了避免用户输入非整数的情况,需要在输入部分加上一个`try-catch`语句块,如果输入的不是整数,则提示用户重新输入。最后记得关闭`Scanner`对象。