2017-12-02 11 views
0

このプログラムでは、各生徒のクラスのサイズと、それらに関連付けられた等級を求めています。 myStudents [i]は各生徒の名前とその成績を保持します。私が今問題を抱えているのは、私のselectionSortの両方です。私は各生徒を成績順に整理することになっていました(最高から最低まで)。静的なvoid selectSort(student [] myStudents)で正しく行ったと思いますが、forループを使ってどのように出力するのかよくわかりません私は選択ソートを呼び出すとき。正しい方向に私を指すように何かアドバイスをいただければ幸いです。ありがとうございます!forループを使用して、生徒とその成績を最高から最低まで印刷します。オブジェクトを使用して

import java.util.Scanner; 
public class Final4{ 

    public static void main(String[] args) { 



     Scanner myInput=new Scanner(System.in); 
     System.out.print("Enter the size of the class: "); 
     int num = myInput.nextInt(); 


     int array[] = new int[num]; 
     double score; 
     student[] myStudents = new student[num]; 


     for (int i = 0 ; i < array.length; i++) { 
      System.out.print("Please enter a student name: "); 
      myInput.useDelimiter(System.getProperty("line.separator")); 
      String s; 
      s = myInput.next(); 

      System.out.print("Please enter " + s +"'s score: "); 

      score = myInput.nextDouble(); 

      myStudents[i] = new student(s, score); 

     } 

    } 
    selectionSort() 


    public static void selectionSort(student[] myStudents) { 


     for (int i = myStudents.length-1; i>0; i--){ 

      int maxIndex = 0; 
      student max = myStudents[0]; 

      for (int j=1; j<=i; j++) 

       if (myStudents[j].getScore() > (max.getScore())) { 
        maxIndex = i; 
       } 

      student temp = myStudents[i]; 

      myStudents[i] = myStudents[maxIndex]; 

      myStudents[maxIndex] = temp; 


     } 

    } 
} 
class student { 
    String name; 
    double score; 

    student(String name, double score) { 
     this.name = name; 
     this.score = score; 
    } 

    public double getScore() { 
     return score; 
    } 
    public String getName() { 
     return name; 
    } 
} 

私は組み込んだが、取得したオブジェクト始めると少し混乱してしまう傾向にある。ここでも、何かアドバイスは大いにあります

+0

あなたは 'Stream.of(strings).forEach(System.out :: println) 'のようなfor-loopを出力することを意味します。 – ifly6

+0

名前とスコアを非公開にしない場合。 student.scoreとstudent.nameだけでアクセスできます。また、名前を考慮してください。等級が等しい場合は、アルファベット順の名前でソートする必要があります。 – Meepo

答えて

1

Studentの配列をどのように印刷するかは選択ソートでソートされていましたか?

あなたのメインメソッドで、条件をループした後(学生配列の作成時)にこのコードを追加します。

selectionSort(myStudents); 

for(Student s: myStudents) { 
    System.out.println(s.getName() + " " + s.getScore()); 
} 

このコードは、学生の配列を印刷します。

関連する問題