qq_37857769 2017-03-18 12:17 采纳率: 55.3%
浏览 2083
已采纳

小白求大神帮忙 在线等

1.2.1.设计一个Student类,该类中包括学生的姓名和成绩。创建Student类的5个对象,如下所示:

姓名 成绩
刘德华 85
张学友 100
刘杰 65
章子怡 58
周迅 76

将以上5个对象放入LinkedList中,
完成如下操作和统计:
1、输出LinkedList中的对象个数。
2、删除姓名为“刘杰”的学生信息,并输出LinkedList中现有学生信息。
3、将姓名为“刘德华”的学生成绩改为95。
4、输出成绩不及格的学生姓名

  • 写回答

5条回答 默认 最新

  • zhangpan_soft 2017-03-18 13:04
    关注
    // 实体类
    public class Student {
            private String name;
            private double score;
    
            public Student() {
            }
    
            public Student(String name,
                                        double score) {
                    this.name = name;
                    this.score = score;
            }
    
            public String getName() {
                    return name;
            }
    
            public void setName(String name) {
                    this.name = name;
            }
    
            public double getScore() {
                    return score;
            }
    
            public void setScore(double score) {
                    this.score = score;
            }
    
            @Override
            public String toString() {
                    return "Student{" + "name='" + name + '\'' + ", score=" + score + '}';
            }
    }
     // 核心代码
     /**
            * 打印成绩不及格的学生姓名
            * @param students
            */
            private void printFailName(List<Student> students) {
                    for (Student student : students) {
                            if (student.getScore() < 60) System.out.println(student.getName());
                    }
            }
    
            /**
            * 根据名字修改成绩
            * @param name
            * @param score
            * @param students
            */
            private void modifyScoreByName(String name,
                                                                        double score,
                                                                        List<Student> students) {
                    if (name == null) throw new RuntimeException("名字不能为空");
                    for (Student student : students) {
                            if (name.equals(student.getName())) student.setScore(score);
                    }
            }
    
            /**
            * 根据姓名移除学生信息
            *
            * @param name
            * @param students
            * @return
            */
            private void removeByName(String name,
                                                                List<Student> students) {
                    if (name == null) throw new RuntimeException("名字不能为空");
                    for (Student student : students) {
                            if (name.equals(student.getName())) {
                                    students.remove(student);
                                    break;
                            }
                    }
            }
    
            /**
            * 初始化数据
            *
            * @return
            */
            public List<Student> init() {
                    List<Student> students = new LinkedList<>();
                    students.add(new Student("刘德华",
                                                                    85));
                    students.add(new Student("张学友",
                                                                    100));
                    students.add(new Student("刘杰",
                                                                    65));
                    students.add(new Student("章子怡",
                                                                    58));
                    students.add(new Student("周迅",
                                                                    76));
                    return students;
            }
    // 测试
    @Test
    public void test1() {
        List<Student> students = init();// 初始化数据
        System.out.println(students);
        removeByName("刘杰",
                     students);// 移除信息;
        System.out.println(students);
        modifyScoreByName("刘德华",
                          95,
                          students);// 修改成绩
        System.out.println(students);
        printFailName(students);
        System.out.println(students);
    }
        最终运行结果截图:
        ![图片说明](https://img-ask.csdn.net/upload/201703/18/1489842237_990787.png)
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
  • ValDC_Morning 2017-03-18 12:45
    关注

    主要是编写函数,注意算法思想,可以在网页上搜一下,然后自己理解

    评论
  • ValDC_Morning 2017-03-18 12:47
    关注

    在类里定义操作对象的函数,编写函数Display输出对象的各个内容,Delete 函数,第二个可以在Delete函数调用后再调用Display函数输出学生信息,第三个需要查找学生,编写一个Find函数,查找,然后修改对象成绩,第四个也可定义一个筛选函数,访问对象的成绩_grades 判断条件为Stu._grades<60,输出满足这个条件的所有对象姓名即可

    评论
  • zhangpan_soft 2017-03-18 13:09
    关注

    上述图片说明:

    评论
  • zhangpan_soft 2017-03-18 13:10
    关注

    补充,上述代码有个小问题就是如果有重名的只能移除第一个,所以做如下修改
    /**
    * 根据姓名移除学生信息
    *
    * @param name
    * @param students
    * @return
    */
    private void removeByName(String name,
    List students) {
    if (name == null) throw new RuntimeException("名字不能为空");
    leb:for (Student student : students) {
    if (name.equals(student.getName())) {
    students.remove(student);
    break leb;
    }
    }
    }

    评论
查看更多回答(4条)

报告相同问题?

悬赏问题

  • ¥60 关于海信电视聚好看安装应用的问题
  • ¥15 vue引入sdk后的回调问题
  • ¥15 求一个智能家居控制的代码
  • ¥15 ad软件 pcb布线pcb规则约束编辑器where the object matpcb布线pcb规则约束编辑器where the object matchs怎么没有+15v只有no net
  • ¥15 虚拟机vmnet8 nat模式可以ping通主机,主机也能ping通虚拟机,但是vmnet8一直未识别怎么解决,其次诊断结果就是默认网关不可用
  • ¥20 求各位能用我能理解的话回答超级简单的一些问题
  • ¥15 yolov5双目识别输出坐标代码报错
  • ¥15 这个代码有什么语法错误
  • ¥15 给予STM32按键中断与串口通信
  • ¥15 使用QT实现can通信