用java应该怎么写

本题要求编写程序,根据输入学生的成绩,统计并输出学生的平均成绩、最高成绩和最低成绩。建议使用动态内存分配来实现。

输入格式:
输入第一行首先给出一个正整数N,表示学生的个数。接下来一行给出N个学生的成绩,数字间以空格分隔。

输出格式:
按照以下格式输出:

average = 平均成绩
max = 最高成绩
min = 最低成绩
结果均保留两位小数。

输入样例:
3
85 90 95
输出样例:
average = 90.00
max = 95.00
min = 85.00

/**
     * 将字符串数组转为 double 类型数组的方法
     * 同时判断数据量是否正确
     * 
     * @param N   总人数
     * @param str 成绩字符串
     * @return
     */
    public static double[] splitString(int N, String str) {
        double sum = 0;
        // 按空格拆分字符串
        String[] String_array = str.split("\\s+");
        int length = String_array.length;
        if (N != length) {
            // 数据量不对返回空数组
            return new double[0];
        }
        double[] array = new double[length + 1];
        for (int i = 0; i < length; i++) {
            // 将每个成绩从字符串格式转为double格式并放入数组
            double sorce = Double.parseDouble(String_array[i]);
            array[i] = sorce;
            sum += sorce; // 求总成绩
        }
        // 数组最后一个是总成绩
        array[length] = sum;
        return array;
    }

    /*
     * 获取结果的方法
     */
    public static double[] result(Scanner in) {
        int N; // 总人数
        // 输入的成绩需要使用字符串接收
        String scorce_String;
        // 转换为 double 类型数据的成绩数组
        double[] sorces;
        double[] result = new double[4];
        System.out.print("请输入学生数量:");
        // 接收输入的总人数
        try {
            N = Integer.parseInt(in.nextLine());
            System.out.print("已确认,请输入成绩(每个同学成绩使用空格分隔):");
            // 接收成绩字符串
            scorce_String = in.nextLine();
            System.out.println("已接收,请等候");
            sorces = splitString(N, scorce_String);
            if (sorces.length == 0) {
                System.out.println("成绩数据数量不对,请重新输入\t");
                // 递归调用此方法重新进行输入
                return result(in);
            }
            // 对数组进行自然排序
            Arrays.sort(sorces);
            // 最小值是数组第一个
            result[0] = sorces[0];
            // 最大值是数组倒数第二个
            result[1] = sorces[N - 1];
            // 总成绩应该在数组最后一个,求平均值
            result[2] = sorces[N] / N;
            // 总成绩
            result[3] = sorces[N];
            return result;
        } catch (NumberFormatException e) {
            System.out.println("数据格式不正确,请重新输入");
            return result(in);
        }
    }

    public static void main(String[] args) {
        Scanner in = new Scanner(System.in); // 键盘输入对象
        double[] result = result(in);
        in.close();
        System.out.printf("最小值:%.2f\n", result[0]);
        System.out.printf("最大值:%.2f\n", result[1]);
        System.out.printf("平均值:%.2f\n", result[2]);
        System.out.printf("总成绩:%.2f\n", result[3]);

    }