Java 我需要对一个对象数组进行排序,并将它们从高到低排序
我是一名java初级班的学生,今天早些时候我的作业得到了一些帮助,真的很有帮助!所以我想在我放弃这最后一部分之前,我会再试一次。我已经能够让一切顺利,但我的那一类根本不起作用。我必须使用这种格式,因为我的教授不希望我们使用排序API。它处理正确,这意味着我手动得到的结果与运行它时相同,因此我认为问题在于逻辑本身。有人能看出我做错了什么,并提供任何提示或帮助吗。提前谢谢。以下是我的排序循环代码:Java 我需要对一个对象数组进行排序,并将它们从高到低排序,java,arrays,sorting,Java,Arrays,Sorting,我是一名java初级班的学生,今天早些时候我的作业得到了一些帮助,真的很有帮助!所以我想在我放弃这最后一部分之前,我会再试一次。我已经能够让一切顺利,但我的那一类根本不起作用。我必须使用这种格式,因为我的教授不希望我们使用排序API。它处理正确,这意味着我手动得到的结果与运行它时相同,因此我认为问题在于逻辑本身。有人能看出我做错了什么,并提供任何提示或帮助吗。提前谢谢。以下是我的排序循环代码: int i, j; // used to index into the array d
int i, j; // used to index into the array
double temp;
for (i = 1; i < count ; ++i) {
temp = students[i].getGPA();
j = i - 1;
while (j >= 0 && temp < students[j].getGPA())
{
students[j + 1] = students[j];
j = j - 1;
}
students[j + 1]= students[i];
}
inti,j;//用于索引到数组中
双温;
对于(i=1;i=0&&temp
您的问题是,while循环的第一次迭代会覆盖学生[i]。当您输入for循环时,您需要将学生[i]而不仅仅是其GPA保留在一个临时值中。您的交换操作不正确。检查此示例代码:
for (int i = 0; i < students.length; i++)
{
for (int j = 1; j < students.length - i; j++)
{
if (students[j - 1].getGPA() > students[j].getGPA())
{
// assuming that your class name is Student
Student temp = students[j - 1];
students[j - 1] = students[j];
students[j] = temp;
}
}
}
for(int i=0;i学生[j].getGPA())
{
//假设你的班名是学生
学生临时工=学生[j-1];
学生[j-1]=学生[j];
学生[j]=临时工;
}
}
}
稍微细化了您的逻辑。请验证是否合适
package com.kvvssut.misc;
public class SortArray {
public static void main(String[] args) {
double [] studentsGPA = {8.3,7.2,10,6.5,4.9};
int count = studentsGPA.length;
int i, j; // used to index into the array
double temp;
for (i = 1; i < count ; ++i) {
j = i;
while (j > 0 && (temp = studentsGPA[j]) < studentsGPA[--j]) { // can use students[j].getGPA() similarly
studentsGPA[j+1] = studentsGPA[j];
studentsGPA[j] = temp;
}
}
for (double sgpa : studentsGPA ) {
System.out.println(sgpa);
}
}
}
package com.kvssut.misc;
公营索塔雷酒店{
公共静态void main(字符串[]args){
双[]学生SGPA={8.3,7.2,10,6.5,4.9};
int count=studentsGPA.length;
int i,j;//用于索引到数组中
双温;
对于(i=1;i0&(temp=studentsGPA[j])
可能是重复的谢谢,我已经看完了。谢谢你的回答。我以前尝试过,但是我很难让数据类型匹配。当我把temp作为一个像students[I]这样的对象时,它会让我将它们与“太好了!我用这种方式,起初它抛出了一个错误,但我只需将第二个for循环更改为比students小一个。长度和效果都很好。非常感谢!!!