鱼C论坛

 找回密码
 立即注册
查看: 956|回复: 2

这个咋写啊?

[复制链接]
发表于 2023-10-24 19:23:47 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
2.我国机关事业单位以及国企工作人员招考的面试成绩在计算时是去掉一个最高分和最低分后再计算平均分(由7名考官打分),而某个科目的考试成绩则是计算全班同学(由20人组成一个班)的平均分。请定义一个工作人员招聘类StaffRecruit和期末考试类FinalExam,它们都实现了IAverage接口,但实现方式不同。IAverage中有一个抽象方法average(double[] x),两个默认方法max(double[] x)和min(double[] x)。请编写程序完成上述类和接口的设计,并编写测试应用程序测试。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2023-10-24 19:24:47 | 显示全部楼层
首先,我们需要定义一个接口  IAverage ,其中包含一个抽象方法  average(double[] x)  和两个默认方法  max(double[] x)  和  min(double[] x) 。接口的定义如下:
public interface IAverage {
    double average(double[] x);
    
    default double max(double[] x) {
        double max = x[0];
        for (double num : x) {
            if (num > max) {
                max = num;
            }
        }
        return max;
    }
    
    default double min(double[] x) {
        double min = x[0];
        for (double num : x) {
            if (num < min) {
                min = num;
            }
        }
        return min;
    }
}

接下来,我们需要创建一个工作人员招聘类  StaffRecruit  和一个期末考试类  FinalExam ,它们都实现了  IAverage  接口。这两个类的实现方式不同,分别用于计算工作人员招聘的面试成绩和某个科目的考试成绩。类的定义如下:
public class StaffRecruit implements IAverage {
    @Override
    public double average(double[] x) {
        // 去掉一个最高分和一个最低分
        double sum = 0;
        double max = max(x);
        double min = min(x);
        for (double num : x) {
            if (num != max && num != min) {
                sum += num;
            }
        }
        return sum / (x.length - 2);
    }
}

public class FinalExam implements IAverage {
    @Override
    public double average(double[] x) {
        // 计算全班同学的平均分
        double sum = 0;
        for (double num : x) {
            sum += num;
        }
        return sum / x.length;
    }
}

最后,我们可以编写一个测试应用程序来测试这些类的功能。测试应用程序的代码如下:
public class Main {
    public static void main(String[] args) {
        double[] interviewScores = {80, 90, 85, 95, 70, 75, 88};
        double[] examScores = {80, 90, 85, 95, 70, 75, 88, 92, 87, 78, 83, 79, 88, 91, 86, 82, 89, 84, 80, 85};
        
        StaffRecruit staffRecruit = new StaffRecruit();
        double averageInterviewScore = staffRecruit.average(interviewScores);
        System.out.println("工作人员招聘的面试成绩平均分:" + averageInterviewScore);
        
        FinalExam finalExam = new FinalExam();
        double averageExamScore = finalExam.average(examScores);
        System.out.println("某个科目的考试成绩平均分:" + averageExamScore);
    }
}

运行测试应用程序,将会输出工作人员招聘的面试成绩平均分和某个科目的考试成绩平均分。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-10-29 17:49:29 | 显示全部楼层
isdkz 发表于 2023-10-24 19:24
首先,我们需要定义一个接口  IAverage ,其中包含一个抽象方法  average(double[] x)  和两个默认方法  ma ...

类图怎么画?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-7-3 21:02

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表