这串JAVA代码如何实现按科目成绩排序啊?

package com.edu.cn;
import java.util.ArrayList;
import java.util.Scanner;

/***
* 学生信息管理系统功能类 增 删 查 排序
* @author ass
*
*/
public class StudentSystem {

/**
* 录入学生信息功能
*/
ArrayList<Student> stuList =new ArrayList<Student>();
public void add(){
while( true){
System.out.println("请输入学生信息");
System.out.print("请输入学生学号");
Scanner in=new Scanner(System.in);//从键盘输入
int id=in.nextInt();
System.out.print("请输入学生姓名");
String name =in.next();
System.out.print("请输入高数成绩");
float math=in.nextFloat();
System.out.print("请输入java成绩");
float java=in.nextFloat();
System.out.print("请输入英语成绩");
float english=in.nextFloat();
Student stu=new Student(id,name,math,english,java);
stuList.add(stu);//把stu加入stuList集合
System.out.println("是否继续输入学生信息:1.继续输入---------否则不继续输入\n");
int choice=in.nextInt();
if(choice!=1){
break;
}
}
}
/**
* 展示学生信息
*/
public void display(){
System.out.println("学生成绩信息如下所示\n");
System.out.println("学号\t姓名\tjava成绩\t高数成绩\t英语成绩\t总成绩\t");
for(int i=0;i<stuList.size();i++){
Student stu=stuList.get(i);
System.out.println(stu.getId()+"\t"+stu.getName()+"\t"+stu.getJavaScore()+"\t"+
stu.getMathScore()+"\t"+stu.getEnglishScore()+"\t"+stu.getTotalScore()+"\n");

}
}
public void seek1 (){
System.out.println("请选则查找方式1.按照学号查找-----2.按照姓名查找");
Scanner in=new Scanner(System.in);
int choice=in.nextInt();
switch(choice){
case 1 :
System.out.print("请输入学习学号");
int sid=in.nextInt();
for(int i=0;i<stuList.size();i++){
Student node=stuList.get(i);
if(node.getId()==sid){
System.out.println("查找到的学生信息如下");
System.out.println("学号\t姓名\tjava成绩\t高数成绩\t英语成绩\t总成绩\t");
System.out.println(node.getId()+"\t"+node.getName()+"\t"+node.getJavaScore()+"\t"+
node.getMathScore()+"\t"+node.getEnglishScore()+"\t"+node.getTotalScore()+"\n");
return;
}

}
System.out.print("未查到该生");
case 2:
break;
case 3:
break;

}

}

/**
* 查询学生信息
*/
public void seek(){
}
public static void main(String[] args){
StudentSystem stuSys=new StudentSystem();
stuSys.add();
stuSys.display();
stuSys.seek1();
}
}

排序可以使用Collections.sort。

例子如下:

import java.util.ArrayList;import java.util.Collections;import java.util.Comparator;import java.util.List;public class Main { private static class Student{ private String name; private float grade; public Student(String name, float grade) { this.name = name; this.grade = grade; } public String getName() { return name; } public void setName(String name) { this.name = name; } public float getGrade() { return grade; } public void setGrade(float grade) { this.grade = grade; } @Override public String toString() { return name + " " + grade; } } public static void main(String[] args) { List<Student> students = new ArrayList<>(); students.add(new Student("Tom", 86)); students.add(new Student("Jack", 70)); students.add(new Student("Mary", 90)); Collections.sort(students, new Comparator<Student>() { @Override public int compare(Student o1, Student o2) { if (o1.getGrade() - o2.getGrade() > 0) { return 1; } else if (o1.getGrade() - o2.getGrade() < 0) { return -1; } else { return 0; } } }); for (Student student : students) { System.out.println(student.toString()); } }}

使用要排序的字段来比较。就可以得到有序的列表。

温馨提示:答案为网友推荐,仅供参考