jmu-Java-06异常-03-throw与throws

    科技2022-08-06  119

    前言

    C语言中一般通过返回错误代码来表示一个函数执行是否有误。然而有的时候错误返回值可能与正常值相混淆。 Java中使用异常来表示程序运行中发生的错误。本实验的主要目的为了演示使用异常机制替代错误返回值。

    题目内容

    编写类ArrayUtils 方法:public static double findMax(double[] arr,int begin, int end) 方法功能:用来返回arr数组中在下标begin与end-1之间(包括end-1)的最大值。 注意:必须使用throws关键字声明findMax。 方法说明:

    要求begin<end,否则抛出相应的异常(IllegalArgumentException)。begin不得小于0,end不得大于arr.length,否则也抛出异常。

    **注意:**抛出异常时,应让用户知道错误发生的原因。

    main方法:

    输入n,创建大小为n的int数组。

    输入n个整数,放入数组。

    输入若干对整数,代表begin与end,然后调用ArrayUtils.findMax方法。当输入的不是整数类型字符串,则退出输入循环。

    最后使用如下代码打印标识信息

    try { System.out.println(ArrayUtils.class.getDeclaredMethod("findMax", double[].class,int.class,int.class)); } catch (Exception e1) { }

    输入样例:

    5 1 3 5 6 8 0 5 3 3 3 4 3 2 -1 3 0 6 end

    输出样例:

    8.0 java.lang.IllegalArgumentException: begin:3 >= end:3 6.0 java.lang.IllegalArgumentException: begin:3 >= end:2 java.lang.IllegalArgumentException: begin:-1 < 0 java.lang.IllegalArgumentException: end:6 > arr.length //这里是标识信息

    答案

    import java.util.Scanner; class ArrayUtils { public static double findMax(double[] arr, int begin, int end) throws IllegalArgumentException { if (begin >= end) { throw new IllegalArgumentException("begin:" + begin + " >= end:" + end); }else if (begin < 0){ throw new IllegalArgumentException("begin:" + begin + " < 0"); }else if (end > arr.length){ throw new IllegalArgumentException("end:" + end + " > arr.length"); } double max = arr[begin]; for (int i = begin; i < end; i++) { max = Math.max(max, arr[i]); } return max; } } public class Main { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); int n = scanner.nextInt(); double[] arr = new double[n]; for (int i = 0; i < n; i++) { arr[i] = scanner.nextDouble(); } while(scanner.hasNextInt()){ int begin = scanner.nextInt(); int end = scanner.nextInt(); try{ System.out.println(ArrayUtils.findMax(arr,begin,end)); }catch (Exception e){ System.out.println(e); } } try { System.out.println(ArrayUtils.class.getDeclaredMethod("findMax", double[].class,int.class,int.class)); } catch (Exception e1) { } } }
    Processed: 0.012, SQL: 8