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数组,这样一来,下标就和原来的乱了,所以找不到学生姓名了,请大家帮我纠正下,能用什么方法,谢谢
嗯,这样之类……
[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=
http://gceclub.sun.com.cn/Java_Docs/html/zh_CN/api/java/util/Comparator.html
换个思维……这是JAVA