利用intellijidea输入两个正整数M和N用户输入后,要判定是否为正整数,不是的则要求重新输入,求其最大公约数和最小公倍数要求不使用函数,只能使用循环语句实现
时间: 2024-09-28 17:13:28 浏览: 33
在IntelliJ IDEA中,你可以通过以下步骤编写一个简单的Java程序来实现这个功能:
首先,你需要创建一个`Scanner`对象获取用户的输入,然后对输入的`M`和`N`进行有效性检查。如果它们不是正整数,就提示用户重新输入。
```java
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
// 输入并验证M和N
int M, N;
do {
System.out.print("请输入正整数M:");
if (!scanner.hasNextInt() || scanner.nextInt() <= 0) {
System.out.println("输入错误,请输入一个正整数!");
scanner.next(); // 清除无效输入
}
} while (scanner.nextInt() <= 0);
do {
System.out.print("请输入另一个正整数N:");
if (!scanner.hasNextInt() || scanner.nextInt() <= 0) {
System.out.println("输入错误,请输入一个正整数!");
scanner.next();
}
} while (scanner.nextInt() <= 0);
M = scanner.nextInt();
N = scanner.nextInt();
// 计算最大公约数 (Euclidean算法)
int gcd = findGCD(M, N);
// 计算最小公倍数 (使用最大公约数计算)
int lcm = M * N / gcd;
System.out.printf("M和N的最大公约数是:%d\n", gcd);
System.out.printf("M和N的最小公倍数是:%d\n", lcm);
scanner.close();
}
private static int findGCD(int a, int b) {
while (b != 0) {
int temp = b;
b = a % b;
a = temp;
}
return a;
}
}
```
在这个例子中,我们使用了do...while循环来反复询问用户输入,直到得到正确的正整数。同时,`findGCD`是一个递归或迭代实现的欧几里得算法,用于找出两个数的最大公约数。
阅读全文