3.输入两个整数(可以用Scanner的nextInt()方法实现),但在程序运行时,会产生输入异常,如输入的数字是小数或负数等,则程序的运行中会出现异常,严重时程序会发生中断,要保证程序的健壮性,可以采用异常捕获和处理技术。 ①创建一个类MaxFactor; ②在类中定义一个方法,完成最大公约数的计算并声明该方法会抛出的异常,同时在该方法中手动抛出一个异常对象; ③在main方法中调用定义的方法,并捕获方法抛出规划的异常进行处理。
时间: 2023-12-20 11:04:29 浏览: 59
下面是代码实现:
```java
import java.util.InputMismatchException;
import java.util.Scanner;
public class MaxFactor {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
try {
System.out.print("请输入第一个整数:");
int num1 = scanner.nextInt();
System.out.print("请输入第二个整数:");
int num2 = scanner.nextInt();
System.out.println(num1 + " 和 " + num2 + " 的最大公约数为:" + maxFactor(num1, num2));
} catch (InputMismatchException e) {
System.out.println("输入的不是整数!");
} catch (IllegalArgumentException e) {
System.out.println(e.getMessage());
} catch (Exception e) {
System.out.println("程序发生异常,退出!");
}
}
public static int maxFactor(int num1, int num2) throws IllegalArgumentException {
if (num1 <= 0 || num2 <= 0) {
throw new IllegalArgumentException("输入的数字必须为正整数!");
}
int temp = num1 % num2;
while (temp != 0) {
num1 = num2;
num2 = temp;
temp = num1 % num2;
}
return num2;
}
}
```
在上述代码中,我们将输入整数的操作放在了 try 块中,并捕获了可能产生的 InputMismatchException 异常,以保证程序健壮性。同时,在 maxFactor 方法中,我们通过手动抛出 IllegalArgumentException 异常,限制了输入的数字必须为正整数。在 main 方法中,我们捕获了这个异常,并通过 getMessage() 方法获取异常信息进行输出。最后,我们还添加了一个 catch 块来捕获并处理其他可能发生的异常,以保证程序的完整性和健壮性。
阅读全文