“借鉴”来的答案
package experiment4;
import java.util.*;
public class A {
/*class MyComparator implements Comparator<Student>{
public int compare(Student o1, Student o2) {
if(o1.getGrade() < o2.getGrade())
return 1;
else if(o1.getGrade() > o2.getGrade())
return -1;
else
return 0;
}
}
public static void main(String[] args) {
ArrayList list = new ArrayList();
Scanner sc = new Scanner(System.in);
System.out.println("是否继续录入学生信息?(Y/N)");
while(true){
String yn = sc.nextLine();
if(yn.equals("y")||yn.equals("Y")){
System.out.println("请输入姓名和成绩:");
String name = sc.next();
double grade = sc.nextDouble();
list.add(new Student(name,grade));
System.out.println("是否继续录入学生信息?(Y/N)");
}
else if(yn.equals("N")||yn.equals("n")){
break;
}
}
A s = new A();
MyComparator myCom = s.new MyComparator();
Collections.sort(list, myCom);
System.out.println(list.toString() + " ");
sc.close();
}*/
class Mycomparator implements Comparator <Student>{
public int compare(Student a,Student b) {
if (a.getGrade()<b.getGrade()) {
return 1;
}
else if (a.getGrade()>b.getGrade())
return -1;
else
return 0;
}
}
public static void main(String [] args) {
ArrayList arr = new ArrayList();
Scanner sca = new Scanner (System.in);
System.out.println("是否继续录入学生信息?(Y/N)");
while (true) {
String yn = sca.nextLine();
if(yn.equals("y")||yn.equals("Y")){
System.out.println("请输入姓名和成绩:");
String name = sca.next();
double score = sca.nextDouble();
arr.add(new Student (name,score));
System.out.println("是否继续录入学生信息?(Y/N)");
}
else if(yn.equals("N")||yn.equals("n")){
break;
}
}
A x= new A();
Mycomparator mycom = x.new Mycomparator();
Collections.sort(arr , mycom);
System.out.println(arr.toString()+"");
sca.close();
}
}
class Student{
private String name;
private double grade;
Student(String n, double g){
this.name = n;
this.grade = g;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public double getGrade() {
return grade;
}
public void setGrade(double grade) {
this.grade = grade;
}
public String toString(){
String result = getName() + " "+ getGrade();
return result;
}
}
/*编写一个程序,用户可以从键盘录入若干个学生的姓名和分数
* (程序每次提示用户输入“Y”或“N”决定是否继续录入学生信息,如果用户输入“N”则用户输入完毕。输入的“Y”、“N”不区分大小写)。
* 用户录入完毕后,程序按成绩由高到低的顺序输出学生的姓名和分数(姓名和分数之间用一个空格分割)。
* 【说明:键盘输入可以使用Scanner类】
*/