你的程序,错误太多了。
1)你name和grade只能保存最后一个输入的值,不能循环输入。
2)大概看了一下你的排序,没有求证,是错误的,比如数组会越界。
3)输出排序后的内容,最后两句代码,你将输出写在了排序的代码里,排序还没有排好,输出的不可能正确。
.....
最严重的就是第一条了,你得看看Java的标准输入输出。
我刚写的
先定义一个类实现序列化
public class Students implements Comparable{
private String name;
private int grade;
public Students(String name, int grade) {
super();
this.name = name;
this.grade = grade;
}
public Students() {
super();
// TODO Auto-generated constructor stub
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getGrade() {
return grade;
}
public void setGrade(int grade) {
this.grade = grade;
}
@Override
public int compareTo(Object obj) {
// TODO Auto-generated method stub
return ((Students)obj).getGrade()-this.getGrade();
}
}
在另一个类里测试(刚试过可以)
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
System.out.print("请输入学生个数");
int number = input.nextInt();
Students[] ss=new Students[number];
for(int i=1;i<=number;i++){
System.out.print("请输入第"+i+"个学生的姓名");
String name = input.next();
System.out.print("请输入第"+i+"个学生的成绩");
int grade=input.nextInt();
ss[i-1]=new Students(name,grade);
}
Arrays.sort(ss);
for(int k=1;k<=number;k++){
System.out.println(ss[k-1].getName()+":"+ss[k-1].getGrade());
}
}