您的位置:首页 > 编程语言 > Java开发

一道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.打印不及格的学员信息及数量*/

代码中已经加入了大量注释就不多解释了放一张效果图吧



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());
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: