62,614
社区成员
发帖
与我相关
我的任务
分享
/**
* 学生类
* 由于要实现排序,所以继承Comparable接口
*/
public class Student implements Comparable<Student>{
/**
* 学号
*/
private String num;
/**
* 姓名
*/
private String name;
/**
* 语文
*/
private double yuwen;
/**
* 数学
*/
private double shuxue;
/**
* 外语
*/
private double waiyu;
/**
* 平均成绩
*/
private double ave;
public String getNum() {
return num;
}
public void setNum(String num) {
this.num = num;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public double getYuwen() {
return yuwen;
}
public void setYuwen(double yuwen) {
this.yuwen = yuwen;
}
public double getShuxue() {
return shuxue;
}
public void setShuxue(double shuxue) {
this.shuxue = shuxue;
}
public double getWaiyu() {
return waiyu;
}
public void setWaiyu(double waiyu) {
this.waiyu = waiyu;
}
public double getAve() {
return ave;
}
/**
* 根据三门成绩求出平均成绩
*/
public void setAve() {
this.ave=(yuwen+shuxue+waiyu)/3;
}
/*重写compareTo方法
*/
public int compareTo(Student other) {
int flag=0;
//把自身的平均成绩和另外一个学生的平均成绩做差
//如果相等返回0;如果小于另一个,返回-1;如果大于另一个,返回1
double cha=this.getAve()-other.getAve();
if(cha==0){
flag=0;
}else if(cha<0){
flag=-1;
}else{
flag=1;
}
return flag;
}
public Student(String num, String name, double yuwen, double shuxue,
double waiyu) {
super();
this.num = num;
this.name = name;
this.yuwen = yuwen;
this.shuxue = shuxue;
this.waiyu = waiyu;
//构造对象的时候直接求出平均成绩
this.setAve();
}
public Student() {
super();
}
/* 为了便于调试和输出 生成toString方法
*/
@Override
public String toString() {
return "Student [学号=" + num + ", 姓名=" + name + ", 语文=" + yuwen
+ ", 数学=" + shuxue + ", 外语=" + waiyu + ", 平均=" + ave
+ "]";
}
}
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
public class SavaAndOutput {
public static void main(String[] args) {
//为了方便,我就不写从控制台输入的语句了,直接添加几个学生到集合,但你自己要去试从控制台输入
Student s1=new Student("S20211", "张三", 90, 80.5, 91.5);
Student s2=new Student("S20212", "李四", 70, 85,80);
Student s3=new Student("S20213", "王五", 90, 77, 86);
Student s4=new Student("S20214", "赵二", 95, 80.5, 62.5);
Student s5=new Student("S20215", "钱一", 88, 68.5, 92);
List<Student> list=new ArrayList<Student>();
list.add(s1);
list.add(s2);
list.add(s3);
list.add(s4);
list.add(s5);
//由于Student类已经实现了compareTo方法,所以可以直接排序
Collections.sort(list);
//遍历输出
for(Student s:list){
System.out.println(s);
}
}
}
结果:
Student [学号=S20212, 姓名=李四, 语文=70.0, 数学=85.0, 外语=80.0, 平均=78.33333333333333]
Student [学号=S20214, 姓名=赵二, 语文=95.0, 数学=80.5, 外语=62.5, 平均=79.33333333333333]
Student [学号=S20215, 姓名=钱一, 语文=88.0, 数学=68.5, 外语=92.0, 平均=82.83333333333333]
Student [学号=S20213, 姓名=王五, 语文=90.0, 数学=77.0, 外语=86.0, 平均=84.33333333333333]
Student [学号=S20211, 姓名=张三, 语文=90.0, 数学=80.5, 外语=91.5, 平均=87.33333333333333]