一道Java题目

题目如下:
定义Student类包含姓名:String name、年龄:int age、成绩:int score,生成空参、有参构造、set和get方法、toString方法
1.创建10个学生对象(其中有两个学员信息完全相同)存入集合中
2.去除重复的学员并遍历打印剩余学员信息(分别利用普通for循环、增强for循环、迭代器遍历)
3.打印最高分的学员信息
4.打印平均分
5.打印不及格的学员信息及数量*/
代码中已经加入了大量注释就不多解释了放一张效果图吧

这里写图片描述

import java.util.ArrayList;
import java.util.Arrays;
import java.util.Iterator;
import java.util.List;
import java.util.Random;
/**
 * @author 4everlynn
 */
class Student{
        private String name;
        private int age,score;
        /** 无参数构造函数*/
        public Student() {}
        /** 有参数构造函数*/
        public Student(String name, int age, int score) {
            super();
            this.name = name;
            this.age = age;
            this.score = score;
        }

        /** 各种Get、Set方法*/
        public String getName() {
            return name;
        }
        public void setName(String name) {
            this.name = name;
        }
        public int getAge() {
            return age;
        }
        public void setAge(int age) {
            this.age = age;
        }
        public int getScore() {
            return score;
        }
        public void setScore(int score) {
            this.score = score;
        }
        /**重写toString方法*/
        @Override
        public String toString() {
            return "Student [name=" + name +",age=" + age + ",score=" + score + "]";
        }

        @Override
        public int hashCode() {
            final int prime = 31;
            int result = 1;
            result = prime * result + age;
            result = prime * result + ((name == null) ? 0 : name.hashCode());
            result = prime * result + score;
            return result;
        }
        /**重写equals方法*/
        @Override
        public boolean equals(Object obj) {
            if (this == obj)
                return true;
            if (obj == null)
                return false;
            if (getClass() != obj.getClass())
                return false;
            Student other = (Student) obj;
            if (age != other.age)
                return false;
            if (name == null) {
                if (other.name != null)
                    return false;
            } else if (!name.equals(other.name))
                return false;
            if (score != other.score)
                return false;
            return true;
        }
        /**
         * 寻找最高分的静态函数
         * @param list 存放Student对象的List
         * @return 如果list不为空则返回最高分否则返回 -1 
         */
        public static int getMax(List<Student> list){
            int res= 0;
            if(list!=null){
                int count = list.size();
                int temp [] = new int [count];
                for(int i = 0;i < count;i++){
                    temp[i] = list.get(i).getScore();
                }
                Arrays.sort(temp);
                res = temp[count-1];
            }else return -1;
            return res;
        }
        /**
         * 计算平均数的静态函数
         * @param list 存放Student对象的List
         * @return 如果list不为空则返回平均分否则返回 -1 
         */
        public static float getAvg(List<Student> list){
            float res= 0;
            if(list!=null){
                int count = list.size();
                int temp [] = new int [count];
                for(int i = 0;i < count;i++){
                    temp[i] = list.get(i).getScore();
                    res += temp[i];
                }
                res/=count;
            }else return -1;
            return res;
        }

        /**
         * 寻找不及格人数的静态函数
         * @param list 存放Student对象的List
         * @param unpassScore 设置不及格的分数
         * @return 如果list不为空则返回平均分否则返回 null
         */
        public static List<Student> findUnpassStudent(List<Student> list,int unpassScore){
            List<Student> temp = null;
            if(list != null){
                temp = new ArrayList<>();
                for(Student student:list){
                    if(student.getScore()<unpassScore)
                        temp.add(student);
                }
            }else return null;
            return temp;

        }
        /**
         * 移除重复数据的静态函数
         * @param list 存放Student对象的List
         * @return 返回没有重复数据的List
         */
        public static List<Student> removeDuplicateData(List<Student> list){
            for(int i = 0;i < list.size();i++){
                for(int j = 0;j < i;j++){
                    /**用两个for循环将每一个Student进行对比*/
                    if(list.get(i).equals(list.get(j))){ 
                        list.remove(j);
                    }
                }
            }
            return list;
        }
        public static void main(String[] args) {
            Student student = null;
            /**Random用于生成不同的Student对象*/
            Random r = new Random(); 
            List<Student> list = new ArrayList<Student>();
            /**初始化数据*/
            for(int i = 0;i < 10;i++){
                student= new Student();
                if(i<8){
                    student.setAge(r.nextInt(25));
                    student.setName(String.valueOf(i));
                    student.setScore(r.nextInt(100));
                    /**加入8个不同的数据*/
                }else{
                    /**加入两个重复的数据*/
                    student.setAge(18);
                    student.setName("4everlynn");
                    student.setScore(5);
                }
                list.add(student);
            }
            list = Student.removeDuplicateData(list); /**移除重复数据*/
            /**普通for循环打印数据*/
            System.out.println("\n普通for - >\n");
            for(int i = 0;i<list.size();i++)
                System.out.println(list.get(i).toString());
            /**增强型for循环打印数据*/
            System.out.println("\n增强型for - >\n");
            for(Student temp:list)
                System.out.println(temp.toString());
            /**迭代器打印数据*/
            System.out.println("\n迭代器 - >\n");
            Iterator<Student>  it =  list.iterator();
            /**设置迭代器*/
            while(it.hasNext()){
                System.out.println(it.next());
            }
            System.out.println("\n最高分 -> "+Student.getMax(list)+"\n平均分 -> " + Student.getAvg(list));
            List<Student> unpass = Student.findUnpassStudent(list, 60);
            System.out.println("不及格的学生如下\n");
            for(Student temp:unpass)
                System.out.println(temp.toString());
            System.out.println();
            System.out.println("不及格人数 -> " + Student.findUnpassStudent(list, 60).size());
        }
    }
  • 3
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值