/**
* 功能:定义一个Student数组,其中保存学生的基本信息,包括姓名,学号,性别,还有三门课的成绩
* 和课程对应的学分,计算出学分积,降序排序
* 时间:2014年6月4日16:33:24
* 作者:cutter_point
*/
package com.lesson4;
import java.util.*;
public class Demo4_10
{
public static void main(String [] args)
{
//吧成绩放到vector里面去
Student s1=new Student("宋江",1,3,3,5);
Student s2=new Student("肖锋",2,9,9,8);
Student s3=new Student("武松",3,2,10,7);
Student s4=new Student("吴用",4,10,2,6);
Student s5=new Student("诸葛亮",5,10,1,5);
Student s6=new Student("周瑜",6,8,8,7);
Student s7=new Student("司马懿",7,9,10,9);
Student s8=new Student("李逵",8,1,10,6);
Student s9=new Student("孙悟空",9,8,10,9);
Student s10=new Student("唐僧",10,2,2,2);
//存放未排序的
Vector v1=new Vector();
//存放排序后的
Vector v2=new Vector();
//吧类放到v1里面去
v1.add(s1);v1.add(s2);v1.add(s3);v1.add(s4);v1.add(s5);
v1.add(s6);v1.add(s7);v1.add(s8);v1.add(s9);v1.add(s10);
System.out.println(v1.size());
Student temp1=null;
Student temp2=null;
//根据分数进行排序,然后放入到vector中去,依次找到最小的然后去掉它就可以了
for(int i=0 ; v1.size() > 1 ; )
{
//每次都取当前的第一个,因为我会一直删里面的类
temp1=v1.get(i);
//和后面的比较
for(int j=1 ; j
{
temp2=v1.get(j);
if(temp1.getCredit()
{
//如果第一个是小的,那么就交换,一直到找到最大的
temp1=temp2;
}
}
//第一层循环完成,找到当前最大的,放入到v2的第一个
v2.add(temp1);
//吧当前的temp1从v1去掉,直到v1被搬空为止
v1.remove(temp1);
}
//输出v2
for(int i=0 ; i
{
Student st=v2.get(i);
System.out.println("ID:"+st.sid+"名字:"+st.sname+"学分之和:"+st.getCredit());
}
}
}
class Student
{
String sname;
int sid;
String sex;
int ascore;
int bscore;
int cscore;
int acredit;
int bcredit;
int ccredit;
public Student(String sname, int sid, int acredit, int bcredit, int ccredit)
{
this.sname=sname;
this.sid=sid;
this.acredit=acredit;
this.bcredit=bcredit;
this.ccredit=ccredit;
}
public Student getLei(int id)
{
if(this.sid == id)
{
return this;
}
else
{
return null;
}
}
public int getCredit()
{
return acredit+bcredit+ccredit;
}
}PS:这个玩意我搞了2个小时,没想到好难,但是想到了就好简单的,开始我的想法是根据每一个Student对象的sid来找到类,只要把credit总的排序排好,在根据这个来找到sid就可以找到类了,这个想法想起来很可以,但是想要实现的难度还是有点大的,反正以我现在的水平那是没办法,当然你可以用其他容器。