存储学员信息,每个学员信息包括学号、姓名、三门课的成绩、平均成绩,能按平均成绩排序输出学员信息。

lxd_521 2012-12-02 03:22:47
存储学员信息,每个学员信息包括学号、姓名、三门课的成绩、平均成绩,能按平均成绩排序输出学员信息。




做了好多个小时了实在是想不出来了,无奈上来求助大神
...全文
801 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
Timesongs 2012-12-19
  • 打赏
  • 举报
回复
额额,随便说两句
fish8245 2012-12-19
  • 打赏
  • 举报
回复
楼上的方法很容易想到的一种方法!类实现compareable,用集合的排序方法就可以排序了!
kosora曹 2012-12-19
  • 打赏
  • 举报
回复
这是JavaSE的题目?如果是这样,直接用类+集合API就搞定了;代码如下:

/**
 * 学生类 
 * 由于要实现排序,所以继承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]
xingfuzhuzi1314 2012-12-03
  • 打赏
  • 举报
回复
treeset ,这个真心没用过。 正常来说,如果是用mvc之类的,这需求应该做起来挺快的。 写sql,用jdbc查询出list,展现到前台!
lxd_521 2012-12-02
  • 打赏
  • 举报
回复
好像是用treeset做的

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧