一道Java题目
2017-08-05 20:42
363 查看
题目如下:
定义Student类包含姓名:String name、年龄:int age、成绩:int score,生成空参、有参构造、set和get方法、toString方法
1.创建10个学生对象(其中有两个学员信息完全相同)存入集合中
2.去除重复的学员并遍历打印剩余学员信息(分别利用普通for循环、增强for循环、迭代器遍历)
3.打印最高分的学员信息
4.打印平均分
5.打印不及格的学员信息及数量*/
代码中已经加入了大量注释就不多解释了放一张效果图吧
定义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<S a3e2 tudent> 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()); } }
相关文章推荐
- 求助!java当中的一道题目。
- 一道很有意思的JAVA题目
- 引用的一道JAVA题目
- Java学习日志 17.04.30 之前一道题目
- 搜狗一道java题目 关于对象 synchronized 关键字作用在 int, integer
- 一道经典的面向对象题目的JAVA实现
- 京东一道java题目
- 一道关于java线程中断的题目,求大神指导,昨晚的阿里巴巴笔试题
- java 面试中的一道截取字符串的经典题目
- 由一道题目引出的java多态
- java一道关于二维数组的操作的题目
- 一道Java面试题目——随想+心得
- 一道关于java异常处理的题目
- 一道需要完备逻辑思考的小Java题目(对入小白)
- 你感觉你是个JAVA高手吗,那么就来挑战一下吧,下面可是ACM一道很经典的题目,试一吧!
- 一道java题目
- 一道算法题目 java中的数字字符串和数组的算法
- 一道月薪3万的Java面试题目
- java各种文件(xml、properties、txt)处理操作的一道题目
- 【预习笔记】一道很有趣的有关java类加载初始化的题目