叶落听雨殇 2022-01-03 10:38 采纳率: 83.3%
浏览 96
已结题

java sclipse程序设计

  1. 某高中的入学考试包含三门科目:语文,数学、英语。各科满分均为150分。
    入学录取条件:
    (1) 单科考试成绩需大于等于单科总分的60%且总分分数需大于等于300分,可录取;
    (2) 若某一门分数大于等于95%,可以按特长生身份,录取。
    学生类包含姓名、总分、三科成绩等成员变量及对应的getXX()和setXX()方法;定义接口JudgeInterface,其中抽象方法名为judge,其实现类为JudgeImplement,主要功能判断学生是否被录取;运行类Test,主要功能为录入学生信息、调用判断学生是否录取的方法、打印被录取的学生信息等。
    要求:
  2. 使用集合(或列表)保存学生对象;
  3. 指定考生数量,录入考生的信息及成绩;
  4. 输出所有考生姓名;
  5. 筛选录取学生,并对打印其全部信息。
  • 写回答

3条回答 默认 最新

  • 大鹏cool Java领域优质创作者 2022-01-03 11:14
    关注

    示例代码如下:
    学生类:

    public class Student {
    
        /**
         * 满分
         */
        public static final Double MAX = 150d;
    
        /**
         * 学生姓名
         */
        private String name;
    
        /**
         * 语文成绩
         */
        private Double chinese;
    
        /**
         * 数学成绩
         */
        private Double math;
    
        /**
         * 英语成绩
         */
        private Double english;
    
        /**
         * 总成绩
         */
        private Double total;
    
        public String getName() {
            return name;
        }
    
        public void setName(String name) {
            this.name = name;
        }
    
        public Double getChinese() {
            return chinese;
        }
    
        public void setChinese(Double chinese) {
            this.chinese = chinese;
        }
    
        public Double getMath() {
            return math;
        }
    
        public void setMath(Double math) {
            this.math = math;
        }
    
        public Double getEnglish() {
            return english;
        }
    
        public void setEnglish(Double english) {
            this.english = english;
        }
    
        public Double getTotal() {
            return total;
        }
    
        public void setTotal(Double total) {
            this.total = total;
        }
    
        @Override
        public String toString() {
            return MessageFormat.format("姓名:{0},语文成绩:{1},数学成绩:{2},英语成绩:{3},总成绩:{4}", name, chinese, math, english, total);
        }
    
        @Override
        public boolean equals(Object o) {
            if (this == o) {
                return true;
            }
            if (o == null || getClass() != o.getClass()) {
                return false;
            }
            Student student = (Student) o;
            return Objects.equals(name, student.name) && Objects.equals(chinese, student.chinese) && Objects.equals(math, student.math) && Objects.equals(english, student.english) && Objects.equals(total, student.total);
        }
    
        @Override
        public int hashCode() {
            return Objects.hash(name, chinese, math, english, total);
        }
    }
    

    接口 JudgeInterface:

    public interface JudgeInterface {
    
        /**
         * 学生能否被录取
         * @param student
         * @return
         */
        boolean judge(Student student);
    }
    

    实现类 JudgeImplement:

    public class JudgeImplement implements JudgeInterface {
        @Override
        public boolean judge(Student student) {
            double percent60 = Student.MAX * 0.6;
            double percent95 = Student.MAX * 0.95;
    
            if (student.getChinese() >= percent60
                    && student.getMath() >= percent60
                    && student.getEnglish() >= percent60
                    && (student.getChinese() + student.getMath() + student.getEnglish() >= 300)) {
                // 单科考试成绩需大于等于单科总分的60%且总分分数需大于等于300分,可录取;
                return true;
            } else if (student.getChinese() >= percent95 || student.getMath() >= percent95 || student.getEnglish() >= percent95) {
                // 若某一门分数大于等于95%,可以按特长生身份,录取。
                return true;
            }
            return false;
        }
    }
    

    运行类 Test:

    public class Test {
    
        public static void main(String[] args) {
            List<Student> students = new ArrayList<>();
    
            Scanner scanner = new Scanner(System.in);
    
            System.out.print("请指定考生数量:");
            int count = scanner.nextInt();
    
            System.out.println("请录入学生信息及成绩:");
            for (int i = 0; i < count; i++) {
                System.out.printf("录入第%d个学生信息及成绩:\n", i + 1);
                Student student = new Student();
                System.out.print("\t学生姓名:");
                student.setName(scanner.next());
                System.out.print("\t语文成绩:");
                student.setChinese(scanner.nextDouble());
                System.out.print("\t数学成绩:");
                student.setMath(scanner.nextDouble());
                System.out.print("\t英语成绩:");
                student.setEnglish(scanner.nextDouble());
                student.setTotal(student.getChinese() + student.getMath() + student.getEnglish());
                students.add(student);
            }
            System.out.printf("所有考生姓名:%s\n", students.stream().map(Student::getName).collect(Collectors.joining("\t")));
            System.out.println("录取学生:");
            JudgeInterface judgeInterface = new JudgeImplement();
            students.stream().filter(judgeInterface::judge).forEach(System.out::println);
        }
    }
    

    运行结果:

    img

    如有帮助,请采纳。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 1月3日
  • 已采纳回答 1月3日
  • 创建了问题 1月3日

悬赏问题

  • ¥15 如何在炒股软件中,爬到我想看的日k线
  • ¥15 51单片机中C语言怎么做到下面类似的功能的函数(相关搜索:c语言)
  • ¥15 seatunnel 怎么配置Elasticsearch
  • ¥15 PSCAD安装问题 ERROR: Visual Studio 2013, 2015, 2017 or 2019 is not found in the system.
  • ¥15 (标签-MATLAB|关键词-多址)
  • ¥15 关于#MATLAB#的问题,如何解决?(相关搜索:信噪比,系统容量)
  • ¥500 52810做蓝牙接受端
  • ¥15 基于PLC的三轴机械手程序
  • ¥15 多址通信方式的抗噪声性能和系统容量对比
  • ¥15 winform的chart曲线生成时有凸起