有人可以帮助我让这个冒泡排序工作吗?我是一名Java初学者,之前从未使用过排序或数组。我还需要使用菜单中的if语句进行初始化。
冒泡排序方法:
private void sort(int grade, Student[] students) {
int temp = 0; // temporary holding area for swap
int i, j;
if (students.length < 2) {return;}
// Loop through length of the array
for (Student student : students) {
for (i = 0; i < students.length; i++ ) {
// Check to see if there is anything smaller and replace
for ( j = i+1; j < students.length - 1; j++) {
if (student[i] > student[j])
{
temp = student[i];
student[i] = student[j];
student[j] = temp;
到目前为止菜单:(需要添加选项7以使冒泡排序起作用吗?)
public static void UserSelection(Scanner input, int numStudents,
Student[] students) {
// Repeatedly process menu selections by the user.
int choice;
do {
System.out.println();
System.out.println("*** Student Exam Results Menu ***");
System.out.println("(1) Display the results");
System.out.println("(2) Display the average result");
System.out.println("(3) Display the highest grade");
System.out.println("(4) Display the lowest grade");
System.out.println("(5) Search for specific result");
System.out.println("(6) Search for student grade by name");
System.out.println("(7) Sort the results in ascending order");
System.out.println("(8) quit");
choice = input.nextInt();
if (choice == 1)
{
System.out.println(Arrays.toString(students));
} else if (choice == 2)
{
double average = getAverage(students);
System.out.println("average grade = " + average);
} else if (choice == 3)
{
int high = getHighest(students);
System.out.println("high grade = " + high);
} else if (choice == 4)
{
int low = getLowest(students);
System.out.println("low grade = " + low);
} else if (choice == 5)
{
System.out.print("Result to look for: ");
int grade = input.nextInt();
if (result(grade, students)) {
System.out.println(grade +
" is in the collection of grades.");
} else
{
System.out.println(grade +
" is not in the collection of grades.");
}
} else if (choice == 6)
{
System.out.print("Student to search for: ");
String name = input.nextLine();
if (search(name, students) ==null)
{
System.out.println(name +
" is in the list of Students.");
} else
{
System.out.println(name +
" is not in the list of Students");
}
}
答案 0 :(得分:1)
Strudent
类应该实现Comparable
。 compareTo
方法的实现仅比较name
属性,如果您需要比较其他属性,则应在此方法中包含它们。
public class Student implements Comparable<Student> {
private String name;
private int grade;
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;
}
public int compareTo(Student o) {
return this.getName().compareTo(o.getName());
}
}
实施分类使用
//Sort
public static void sort(Student[] students)
{
int j;
boolean flag = true; // set flag to true to begin first pass
Student temp; //holding variable
while (flag)
{
flag = false; //set flag to false awaiting a possible swap
for (j = 0; j < students.length -1; j++)
{
if (students[j].compareTo(students[j+1]) < 0) // change to > for ascending sort
{
temp = students[j]; //swap elements
students[j] = students[j+1];
students[j+1] = temp;
flag = true; //shows a swap occurred
}
}
}
}