Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 使用选择排序对对象数组进行排序?_Java_Arrays_Sorting_Object - Fatal编程技术网

Java 使用选择排序对对象数组进行排序?

Java 使用选择排序对对象数组进行排序?,java,arrays,sorting,object,Java,Arrays,Sorting,Object,这是一个家庭作业问题,所以我不想让别人帮我做。尽管如此,我遇到了一个问题。我了解选择排序,并且可以编写一个代码来完成这项工作,但我不知道如何访问需要排序的对象的特定部分。在这种情况下,它是学生ID号 我得到了一个部分程序,一个学生类(根据我们得到的另一个文件中的值创建学生) importtextio.*; 公营班学生{ 静态void sortByID(int[]A){ 对于(int lastPlace=A.length-1;lastPlace>0;lastPlace--){ int maxLoc

这是一个家庭作业问题,所以我不想让别人帮我做。尽管如此,我遇到了一个问题。我了解选择排序,并且可以编写一个代码来完成这项工作,但我不知道如何访问需要排序的对象的特定部分。在这种情况下,它是学生ID号

我得到了一个部分程序,一个学生类(根据我们得到的另一个文件中的值创建学生)

importtextio.*;
公营班学生{
静态void sortByID(int[]A){
对于(int lastPlace=A.length-1;lastPlace>0;lastPlace--){
int maxLoc=0;
对于(int j=1;j A[maxLoc]){
maxLoc=j;
}
}
int temp=A[maxLoc];
A[maxLoc]=A[lastPlace];
A[最后地点]=临时;
}
}
公共静态void main(字符串参数[]){
学生Q[]学生;
内螺纹螺柱;
字符串名;
int-id;
双平均值;
TextIO.readUserSelectedFile();
NBR=TextIO.getlnInt();
学生=新学生Q[NBR];

对于(int i=0;i为什么不将方法签名从
静态void sortByID(int[]A)
更改为
静态void sortByID(StudentQ[]students)

更改方法签名后,可以执行以下操作进行比较:


if(students[j].id>students[maxLoc].id)

sortById方法应该采用StudentQ数组而不是int数组。整数没有可以用作排序参数的id。StudentQ[].id将不起作用,因为字段id位于StudentQ上。以下是使其起作用所需的重构片段:

static void sortByID(StudentQ[] A) {

for (int lastPlace = A.length-1; lastPlace > 0; lastPlace--) {   
  int maxLoc = 0;
  for (int j = 1; j <= lastPlace; j++) {
     if (A[j].id > A[maxLoc].id) {
        maxLoc = j;  
     }
  }
  StudentQ temp = A[maxLoc];
  A[maxLoc] = A[lastPlace];
  A[lastPlace] = temp;

 }
static void sortByID(StudentQ[]A){
对于(int lastPlace=A.length-1;lastPlace>0;lastPlace--){
int maxLoc=0;
对于(int j=1;j A[maxLoc].id){
maxLoc=j;
}
}
学生Q温度=A[maxLoc];
A[maxLoc]=A[lastPlace];
A[最后地点]=临时;
}

<>如果你有兴趣探索一种更具java风格的方法,考虑使用比较器。

谢谢。由于某种原因,我在尝试学生Q.I..期末考试显然是把我的大脑转向了MUH。我想,但是我们在课堂上没有使用比较器,所以我很可能是对接标记。谢谢你的回答。
static void sortByID(StudentQ[] A) {

for (int lastPlace = A.length-1; lastPlace > 0; lastPlace--) {   
  int maxLoc = 0;
  for (int j = 1; j <= lastPlace; j++) {
     if (A[j].id > A[maxLoc].id) {
        maxLoc = j;  
     }
  }
  StudentQ temp = A[maxLoc];
  A[maxLoc] = A[lastPlace];
  A[lastPlace] = temp;

 }