7-1 测试抛出异常 分数 10 作者 wenyan 单位 山东科技大学 尝试构造类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方法。 输出格式: 异常信息 数组的最大值 输入样例: 在这里给出一组输入。例如: 5 1 2 3 4 5 6 0 5 3 3 3 4 3 2 -1 3 0 6 输出样例: 在这里给出相应的输出。例如: 5 java.lang.IllegalArgumentException: begin:3 >= end:3 4 java.lang.IllegalArgumentException: begin:3 >= end:2 java.lang.IllegalArgumentException: begin:-1 < 0 java.lang.IllegalArgumentException: end:6 > arr.length 代码长度限制 16 KB 时间限制 400 ms 内存限制 64 MB
时间: 2024-03-05 14:48:49 浏览: 77
抛出异常代码示例
以下是实现题目要求的 ArrayUtil 类的代码:
```java
public class ArrayUtil {
public 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 函数的代码,用于测试 ArrayUtil 类的 findMax 方法:
```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() + ": " + e.getMessage());
}
}
}
}
```
在 main 函数中,我们先读入输入的数组和需要调用 findMax 方法的次数。然后在循环中,读入 begin 和 end,调用 findMax 方法,如果 findMax 方法抛出 IllegalArgumentException 异常,就捕获该异常,并输出异常类型和异常信息,否则就输出 findMax 方法的返回值,也就是数组在 [begin, end) 区间内的最大值。
阅读全文