7-6 測試丟擲異常 (20分)
阿新 • • 發佈:2020-12-16
7-6 測試丟擲異常 (20分)
嘗試構造類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
思路:
就按照題述一步一步翻譯就行
import java.util.*;
public class Main {
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner in=new Scanner(System.in);
int n=in.nextInt();
int[] a=new int[n];
for(int i=0;i<n;i++){
a[i]=in.nextInt();
}
int m=in.nextInt();
ArrayUtil aaa=new ArrayUtil();
for(int i=0;i<m;i++){
int low=in.nextInt();
int high=in.nextInt();
aaa.findMax(a,low,high);
}
}
}
class ArrayUtil{
public ArrayUtil() {//建構函式
}
public void findMax(int[] arr, int begin, int end) {
if(begin>=end) {
System.out.println("java.lang.IllegalArgumentException: begin:"+begin+" >= end:"+end);
}else if(begin<0) {
System.out.println("java.lang.IllegalArgumentException: begin:"+begin+" < 0");
}else if(end>arr.length) {
System.out.println("java.lang.IllegalArgumentException: end:"+end+" > arr.length");
}else{
int max=-9999;
for(int i=begin;i<end;i++) {
if(arr[i]>max) {
max=arr[i];
}
}
System.out.println(max);
}
}
}