从键盘输入10个学生的姓名和成绩,用选择法按成绩降序排序并输出(要求姓名和成绩对应关系保持不变)。

解决方案 »

  1.   

    使用TreeMap,key存储姓名,value存储成绩
      

  2.   

    TreeMap是按key排序,要用的话也要key存成绩
    类似场景,创建一个学生类然后实现Comparable接口更好
      

  3.   

    TreeMap是按key排序,要用的话也要key存成绩
    类似场景,创建一个学生类然后实现Comparable接口更好可以按照value排序的,entrySet放在一个新的List再排序
      

  4.   

    我的建议是打个顺序标记作为key然后value为名称和成绩
      

  5.   

    package net.csdn.sample;import java.util.Scanner;public class SelectSort { /**
     * 从键盘输入10个学生的姓名和成绩,用选择法按成绩降序排序并输出(要求姓名和成绩对应关系保持不变)。
     * @param args
     */
    public static void main(String[] args) {
    Student[] students = new Student[10]; // 定义大小为10数组,存放输入的10个学生
    Scanner in = new Scanner(System.in);
    for (int i = 0; i < 10; i++) {
    System.out.println("请输入第" + (i+1) + "个学生姓名和分数(用,隔开):");
    String str = in.nextLine();
    String[] strs = str.split(",");
    String name = strs[0];
    Integer score = Integer.parseInt(strs[1]);
    Student student = new Student(name, score);
    students[i] = student;
    }

    System.out.println("排序前:");
    for (Student student : students) {
    System.out.println(student);
    }

    SelectSortDesc(students);
    System.out.println("排序后:");
    for (Student student : students) {
    System.out.println(student);
    }

    }

    /**
     * 选择排序方法
     * @param students
     */
    public static void SelectSortDesc(Student[] students) {
    for (int i = 0; i < students.length-1; i++) {
    for (int j = i+1; j < students.length; j++) {
    if(students[j].getScore() > students[i].getScore()){
    Student tempStudent = students[i];
    students[i] = students[j];
    students[j] = tempStudent;

    }
    }

    }
    /**
     * 定义学生类
     * @author lx666
     *
     */
    class Student { private String name;
    private int score;

    public Student(String name, int score) {
    super();
    this.name = name;
    this.score = score;
    }

    public String getName() {
    return name;
    }
    public void setName(String name) {
    this.name = name;
    }
    public int getScore() {
    return score;
    }
    public void setScore(int score) {
    this.score = score;
    } @Override
    public String toString() {
    return this.name + "," + this.score;
    }

    }