在单独的类中访问私有变量?

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()因为它试图为方法赋值.

谢谢.

Mad*_*mer 5

使用提供getIDStudent类的方法,这就是它的用途(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)