-1

誰かがこのバブルソートを機能させるのを手伝ってくれませんか? 私は 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");
                }
            }
4

1 に答える 1

1

Strudentクラスは を実装する必要がありますComparablecompareToメソッドの実装は属性のみ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 
        }
      }
    }
  }
于 2013-03-20T12:42:50.930 に答える