1. We have moved from vBulletin to XenForo and you are viewing the site in the middle of the move. Though the functional aspect of everything is working fine, we are still working on other changes including the new design on Xenforo.
    Dismiss Notice

Java Sorting Students in Decreasing Order by Score

Discussion in 'Java' started by MoonBeam080680, Apr 17, 2011.

  1. MoonBeam080680

    MoonBeam080680 New Member

    I am trying to get this program to sort the students in decreasing order by their score. I keep getting an error message when I try to use SelectionSort. This is the error I receive.
    C:\Users\Jen>javac Sort.java
    Sort.java:36: selectionSort(int[]) in Sort cannot be applied to (int)
    int sortOutput = selectionSort(scores);
    ^
    1 error

    Here is the code I am using. Any help would be greatly appreciated.

    Code:
    import java.util.*;
    public class Sort {
     public static void main(String[] args){
      //Create Scanner
      Scanner input = new Scanner(System.in);
      //Get the number of students
      System.out.print("Please enter the number of students: ");
      int numberOfStudents;
      String temp = input.nextLine();
      numberOfStudents = Integer.parseInt(temp);
      //Create Array
      int[] scores = new int[numberOfStudents];
      String [] names = new String[numberOfStudents];
      Scanner input2 = new Scanner(System.in);
      //Loops asking user to enter data
      for (int i = 0; i < names.length; i ++){
        System.out.print("Please enter a name: ");
        names[i] = input.nextLine();
        System.out.print("Please enter a score for the name: ");
        scores[i] = input2.nextInt();
       }
      System.out.println("Students Highest to Lowest");
      for (int i = 0; i < names.length; i++){
       String output = " ";
       output = names[i] + " score is " + scores[i] + "\n";
     
       System.out.println(output);
       int sortOutput = selectionSort(scores[i]);
      }
     
     }
     public static void selectionSort(int [] scores){
      for (int i = scores.length - 1; i >= 1; i--){ 
       //Find the max in the scores array
       int max = scores[0];
       int maxIndex = 0;
       for (int j = 1; j <= i; j++){
        if(max < scores[j]){
         max = scores[j];
         maxIndex = j;
        }
       }
         // Swap scores as necessary
       if (maxIndex != i){
        scores[maxIndex] = scores[i];
        scores[i] = max;
       }
      }
     }
    }
     
  2. ManzZup

    ManzZup New Member

    why are you making the selection sort?
    the arrays of java contains the sort method
     
  3. szilla211

    szilla211 New Member

    the main thing i would say is you initialized 2 arrays in main but you are only passing one to selection sort. you need to pass names[] and scores[] to selection sort for it to work properly. also ur error comes from the fact that u are trying to stuff an array into a primitive type variable. i would delete that entirely.

    lemme know if this helps :)
     

Share This Page