Imp*_*nts 1 java arrays sorting object
这是家庭作业,所以我不指望你为我做这件事.
我有一个程序可以根据学生的身份证号码对学生进行分类.问题是,创建学生的学生班级(由我的老师提供,不能更改)将ID设置为私有,因此我无法在调用函数中访问它们.
这是学生班:
public class StudentQ {
private String name;
private int id;
private double avg;
StudentQ(String sname, int sid, double average){
name=sname;
id=sid;
avg=average;
}
// Note this uses the String static method format to produce a string
// in the same way that System.out.printf does
public String toString(){
return String.format("%15s [%6d]:%7.2f", name,id,avg);
}
public String getName(){
return name;
}
public int getID(){
return id;
}
public double getAverage(){
return avg;
}
public void setAverage(double newavg){
avg=newavg;
}
}
Run Code Online (Sandbox Code Playgroud)
这是我的排序类:
static void sortByID(StudentQ[] students) {
for (int lastPlace = students.length-1; lastPlace > 0; lastPlace--) {
int maxLoc = 0;
for (int j = 1; j <= lastPlace; j++) {
if (students[j].getID() > students[maxLoc].getID()) {
maxLoc = j;
}
}
int temp = students[maxLoc].getID();
*students[maxLoc].id = students[lastPlace].id;
students[lastPlace].id= temp;*
}
}
Run Code Online (Sandbox Code Playgroud)
它现在的方式,它给我和错误说该字段StudentQ.id是不可见的,我不能使用.getID()因为它试图为方法赋值.
谢谢.
使用提供getID的Student类的方法,这就是它的用途(AKA a getter)
students[lastPlace].getID();
Run Code Online (Sandbox Code Playgroud)
你将遇到的下一个问题是它没有setter ...所以你不能(也不应该)分配ID
相反,你应该交换实际的对象引用...
StudentQ temp = students[maxLoc];
students[maxLoc] = students[lastPlace];
students[lastPlace] = temp;
Run Code Online (Sandbox Code Playgroud)