需要学习的知识
1.容器List
2.String的split方法
3.包装器类Integer
在这里插入代码片
package homework;
import java.util.*;
class Subject{//课程类,参数为课程名字,分数
String name;
int score;
public Subject(String name, int score) {
this.name = name;
this.score = score;
}
}
class Student implements Comparable<Student>{
String name,id;//学生名字,id
int idexofsub;//该学生课程数目
Subject []a;
public Student(String name,String id,int score,String nameofsub)
{
idexofsub=0;
this.name=name;
this.id=id;
a=new Subject[10];//仅仅是开辟了空间,都是null
a[idexofsub]=new Subject(nameofsub,score);//创建对象时至少有一门课
idexofsub++;
}
public void add(String name,int score)//加入新的课程
{
a[idexofsub]=new Subject(name,score);
idexofsub++;
}
public double averageScore()//计算平均成绩
{
double r=0;
for (int i=0;i<idexofsub;i++)
{
r+=a[i].score;
}
return r/idexofsub;
}
@Override
public int compareTo(Student o) {
// TODO 自动生成的方法存根
if (this.averageScore()!=o.averageScore())
{
if(this.averageScore()>o.averageScore())//降序(从大到小排序)
return -1;
else
return 1;
}
else
{
return (Integer.parseInt(id)-Integer.parseInt(o.id));//升序(从小到大排序),parseInt为Integer的一个静态方法,将String变成数字
}
}
}
public class ListMain1 {
public static void main(String []args)
{
Scanner cin=new Scanner(System.in);
List<Student> L=new ArrayList<Student>();
String []msg=new String[5];
String s;
while (cin.hasNext())
{
//System.out.println("dws");
s=cin.nextLine();
if (s.equals("exit"))
break;
msg=s.split(",");//将字符串以逗号分隔开,并返回一个String类型的数组
boolean flag=false;
int i;
for ( i=0;i<L.size();i++)
{
if (L.get(i).id.equals(msg[1]))
{
flag=true;
break;
}
}
if (flag)
{
L.get(i).add(msg[0], Integer.parseInt(msg[3]));
}
else
{
L.add(new Student(msg[0],msg[1],Integer.parseInt(msg[3]),msg[2]));
}
}
L.sort(null);//List容器的方法,参数为null时调用容器中对象的ComparaeTo方法进行比较
for (int i=0;i<L.size();i++)
{
System.out.println("No"+(i+1)+":"+L.get(i).id+","+L.get(i).name);
}
cin.close();
}
}