lmlyq 2009-03-26 20:01
浏览 199
已采纳

多属性排序问题

import java.util.Scanner;
public class TestScore
{
   public static int[] ScoreSort(int s[])
   {
     int t;
     for(int i=0;i<s.length;i++)
      {
       for(int j=0;j<s.length-i-1;j++)
        {
         if(s[j]>s[j+1]){
           t=s[j];
           s[j]=s[j+1];
           s[j+1]=t;
           }
        }
       }
       return s;   
   }
    public static void main(String[] args)
    {
    int n;
   
    int[] k;
    Scanner scan=new Scanner(System.in);
    System.out.println("请输入学生个数:");
    n=scan.nextInt();
    Student[] stu = new Student[n];
    k=new int[n];
    for(int i=0;i<n;i++)
    {
    stu[i]=new Student();
    System.out.println("请输入第"+(i+1)+"学生姓名:");
    stu[i].setName(scan.next());
    System.out.println("请输入该学生成绩:");
    stu[i].setScore(scan.nextInt());
    }
      for(int j=0;j<n;j++)
      {
      k[j]=stu[j].getScore();//成绩赋给k数组
      }
       k=ScoreSort(k);//冒泡排序
      
      System.out.println("最高分为:"+k[n-1]);
    System.out.println("第二高分:"+k[n-2]);
    }



}

就是输入n个学生,输入姓名和得分之后,打印出得分最高的和第二高的学生姓名,但是我做出来的是把得分赋值给k数组,这样一来,下标就和原来的乱了,所以找不到学生姓名了,请大家帮我纠正下,能用什么方法,谢谢

  • 写回答

2条回答 默认 最新

  • rednaxelafx 2009-03-26 21:00
    关注

    嗯,这样之类……
    [code="java"]import java.util.*;

    class Student {
    private int score;
    private String name;

    public void setName(String name) {
        this.name = name;
    }
    
    public String getName() {
        return name;
    }
    
    public void setScore(int score) {
        this.score = score;
    }
    
    public int getScore() {
        return score;
    }
    

    }

    public class TestScore {
    public static void main(String[] args) {
    Scanner scan = new Scanner(System.in);
    System.out.println("请输入学生个数:");
    int n = scan.nextInt();
    Student[] stu = new Student[n];
    for(int i = 0; i < n; ++i) {
    stu[i] = new Student();
    System.out.println("请输入第"+(i+1)+"学生姓名:");
    stu[i].setName(scan.next());
    System.out.println("请输入该学生成绩:");
    stu[i].setScore(scan.nextInt());
    }
    Arrays.sort(stu, new Comparator() {
    public int compare(Student a, Student b) {
    return a.getScore() - b.getScore();
    }

            public boolean equals(Object obj) {
                return obj.getClass() == this.getClass();
            }
        });
    
        System.out.println("最高分为:" + stu[n - 1].getScore() + ", " + stu[n - 1].getName());
        System.out.println("第二高分:" + stu[n - 2].getScore() + ", " + stu[n - 2].getName());
    }
    

    }[/code]
    楼主的问题其实不是多属性排序,而是根据对象的单一属性来排序啦 =v=

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥15 求chat4.0解答一道线性规划题,用lingo编程运行,第一问要求写出数学模型和lingo语言编程模型,第二问第三问解答就行,我的ddl要到了谁来求了
  • ¥15 Ubuntu在安装序列比对软件STAR时出现报错如何解决
  • ¥50 树莓派安卓APK系统签名
  • ¥15 maple软件,用solve求反函数出现rootof,怎么办?
  • ¥65 汇编语言除法溢出问题
  • ¥15 Visual Studio问题
  • ¥20 求一个html代码,有偿
  • ¥100 关于使用MATLAB中copularnd函数的问题
  • ¥20 在虚拟机的pycharm上
  • ¥15 jupyterthemes 设置完毕后没有效果