存储学员信息,每个学员信息包括学号、姓名、三门课的成绩、平均成绩,能按平均成绩排序输出学员信息。 存储学员信息,每个学员信息包括学号、姓名、三门课的成绩、平均成绩,能按平均成绩排序输出学员信息。做了好多个小时了实在是想不出来了,无奈上来求助大神 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 treeset ,这个真心没用过。正常来说,如果是用mvc之类的,这需求应该做起来挺快的。写sql,用jdbc查询出list,展现到前台! 这是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方法 */@Overridepublic 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] 楼上的方法很容易想到的一种方法!类实现compareable,用集合的排序方法就可以排序了! 汉语的正则表达式怎么表示 JDK的大问题。高手救命 我认为最好的java视频教程 String中怎样去除最后一个字符 接口Connection怎么实例化呢? 网络通讯中的数据封包问题 谁用过 ofbiz 做过 checkbox的例子,会的请进 菜鸟提问:我想把JTextField中输入的数组读出,但是它是以字符串形式读出的,如何转化为数组呢 求绘制五角星的源代码?? 可否用按钮调用SML文件,然后将运行的结果显示出来? 【新手求助】关于变量初始化的问题 反射
正常来说,如果是用mvc之类的,这需求应该做起来挺快的。
写sql,用jdbc查询出list,展现到前台!
* 学生类
* 由于要实现排序,所以继承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]