尝试构造类ArrayUtil,该类的方法int findMax(int[] arr, int begin, int end)能抛出IllegalArgumentException(表示参数错误)的方法。 正常执行要求begin<=end 如果begin>=end,抛出异常(IllegalArgumentException),异常信息为 “begin:x >= end:x” 如果begin<0,抛出异常(IllegalArgumentException),异常信息为 “begin:x < 0” 如果end>arr.length,抛出异常(IllegalArgumentException),异常信息为 “end:x > arr.length” 要求在findMax方法声明处声明此异常,在main函数里要捕获此异常,并输出异常类型(可用obj.getClass().getName())和异常信息 输入格式: 输入n,表示int数组大小 输入n个整数,放入数组。 输入m,表示begin和end的对数 输入m对整数,代表begin与end,然后调用ArrayUtils.findMax方法。 输出格式: 异常信息 数组的最大值
时间: 2024-04-08 13:33:31 浏览: 26
构造函数中抛出的异常
下面是符合要求的 `ArrayUtil` 类的实现:
```java
class ArrayUtil {
static int findMax(int[] arr, int begin, int end) throws IllegalArgumentException {
if (begin >= end) {
throw new IllegalArgumentException("begin:" + begin + " >= end:" + end);
}
if (begin < 0) {
throw new IllegalArgumentException("begin:" + begin + " < 0");
}
if (end > arr.length) {
throw new IllegalArgumentException("end:" + end + " > arr.length");
}
int max = arr[begin];
for (int i = begin + 1; i < end; i++) {
if (arr[i] > max) {
max = arr[i];
}
}
return max;
}
}
```
在 `main` 方法中,我们可以使用 `try-catch` 块来捕获并处理 `IllegalArgumentException` 异常,并输出异常类型和异常信息:
```java
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int n = scanner.nextInt();
int[] arr = new int[n];
for (int i = 0; i < n; i++) {
arr[i] = scanner.nextInt();
}
int m = scanner.nextInt();
for (int i = 0; i < m; i++) {
int begin = scanner.nextInt();
int end = scanner.nextInt();
try {
int max = ArrayUtil.findMax(arr, begin, end);
System.out.println("数组的最大值:" + max);
} catch (IllegalArgumentException e) {
System.out.println("异常类型:" + e.getClass().getName());
System.out.println("异常信息:" + e.getMessage());
}
}
}
}
```
这样,当 `findMax` 方法中的参数错误时,会抛出 `IllegalArgumentException` 异常,并在 `main` 方法中进行捕获和处理,输出异常类型和异常信息。同时,如果参数正确,会返回数组中指定范围内的最大值。
阅读全文