2017-12-02 1 views
0

이 프로그램에서는 각 학생의 크기와 그에 관련된 등급을 묻는 중입니다. myStudents [i]는 각 학생의 이름과 성적을 보유합니다. 지금 내가 겪고있는 문제는 내 선택의 두 가지 때문입니다. 나는 각 학생들을 성적에 따라 정렬하기로되어 있었는데 (가장 높은 것에서 가장 낮은 것까지. 나는 public static void selectionSort (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

이름과 점수를 비공개로 설정하지 않으면 get 메소드를 만들지 않습니다. . student.score 및 student.name을 사용하여 액세스 할 수 있습니다. 또한 이름을 고려해야합니다. 성적이 동등한 경우 알파벳 순으로 이름을 정렬해야합니다. – Meepo

답변

1

그래서 문제는 바로, 선택 정렬에 의해 정렬됩니다 Student의 배열을 인쇄하는 방법인가?

주된 방법으로 조건을 반복 한 후 (학생 배열 생성시)이 코드를 추가하십시오.

selectionSort(myStudents); 

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

그 코드는 학생 배열을 인쇄합니다.

관련 문제