今天终于通过朋友(ID:weixin_52939031)的全程帮助下写出了学生排名输出的功能。
所以学生排名输出功能代码是他写的(我就参与个理解):
public static void list(){
BufferedReader br=null;
String temp;
int i=0;
System.out.println("学生成绩排名");
try {
br=new BufferedReader(new FileReader("C:\\Users\\86130\\IdeaProjects\\text2\\student.txt"));
while((temp= br.readLine())!=null){
String a[]=temp.split("\t");
if(i==0)
{
i++;
continue;
}
// 保存一个学生的数据
Stu stu = new Stu(Integer.parseInt(a[0].trim()), a[1], Integer.parseInt(a[2].trim()),
Integer.parseInt(a[3].trim()), Integer.parseInt(a[4].trim()), Double.parseDouble(a[5].trim()));
arrayList.add(stu); //添加到集合中
}
Collections.sort(arrayList); //排序
i=0;
System.out.println("排名\t\t学号\t姓名\tja\tpy\tc\t总分");
// 遍历输出有序集合
for (Stu stu : arrayList) {
i++;
System.out.println("第"+i+"名"+"\t"+stu.id + "\t" + stu.name + "\t" + stu.java + "\t" + stu.python + "\t" + stu.c + "\t" + stu.sum);
}
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
然后从中也学到空指针异常和属性转换异常的原因和修改的方法。
后来我自己尝试了用数组的方法来按照他的原理去写,emmm半成功吧,最后困在了排序的方面上。改代码真是件要命的事情。
以下就是我的半成功的代码了:
public static void alist(){
BufferedReader br=null;
String temp;
Stu change= new Stu();
Stu [] ap=new Stu[1000];
int i=0,j=0;
Stu student = new Stu();
System.out.println("学生成绩排名");
int len=0;
for(i=0;i<1000;i++)
{
ap[i]=new Stu();
}
i=0;
try {
br=new BufferedReader(new FileReader("C:\\Users\\86130\\IdeaProjects\\text2\\student.txt"));
while((temp= br.readLine())!=null){
String a[]=temp.split("\t");
// if(i==0)
// {
// i=1;
// continue;
// }
student.id= Integer.parseInt(a[0].trim());
student.name=a[1];
student.java= Integer.parseInt(a[2].trim());
student.python=Integer.parseInt(a[3].trim());
student.c=Integer.parseInt(a[4].trim());
student.sum=Double.parseDouble(a[5].trim());
ap[i++]=student;
len++;
}
for(i=0;i<len;i++)
{
for(j=i;j<len;j++)
{
if(ap[i].sum>ap[j].sum)
{
change=ap[i];
ap[i]=ap[j];
ap[j]=change;
}
}
}
for(i=0;i<len;i++)
{
System.out.println("第"+(i)+"名"+"\t"+ap[i].name+"\t"+ap[i].java+"\t"+ap[i].python+"\t"+ap[i].c);
}
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}}