获取学生姓名和分数并按顺序对其进行排序的代码

时间:2016-05-05 15:23:21

标签: java arrays sorting

我正在编写一个代码,该代码采用教师类大小,然后创建一个包含其名称和分数的数组。我们的想法是让代码按照他们的分数(不是他们的名字)对它们进行排序。我的问题是,我似乎无法将数据的得分部分提高一倍。基本上,代码只接受int输入。

我希望代码在我完成后执行此操作。

班上有多少学生? 6

  1. 姓名:Tom Smith

    得分:82.5

  2. 姓名:Mary Smith

    得分:92.5

  3. 姓名:Alice Falls

    得分:61

  4. 姓名:Linda Newson

    得分:73

  5. 姓名:杰克特纳

    得分:89.3

  6. 姓名:George Brown

    得分:52

  7. 这是我到目前为止所做的:

    import java.util.*;
    public class FinalJamesVincent {
       public static void main(String[] args) {
           Scanner input = new Scanner(System.in);
           System.out.print("Enter the number of students: ");
           int numofstudents = input.nextInt();
           String[] names = new String[numofstudents];
           double[] array = new double[numofstudents];
           for(int i = 0; i < numofstudents; i++) {
               System.out.print("Name: ");
               names[i] = input.next();
               System.out.print("Score: ");
               array[i] = input.nextInt();
           }
           selectionSort(names, array);
           System.out.println(Arrays.toString(names));
       }
       public static void selectionSort(String[] names, double[] array) {
           for(int i = array.length - 1; i >= 1; i--) {
               String temp;
               double currentMax = array[0];
               int currentMaxIndex = 0;
               for(int j = 1; j <= i; j++) {
                  if (currentMax > array[j]) {
                      currentMax = array[j];
                      currentMaxIndex = j;
                  }
               }       
                  if (currentMaxIndex != i) {
                      temp = names[currentMaxIndex];
                      names[currentMaxIndex] = names[i];
                      names[i] = temp;
                      array[currentMaxIndex] = array[i];
                      array[i] = currentMax;
                  }
           }       
       }
    } 
    

1 个答案:

答案 0 :(得分:3)

array[i] = input.nextInt();

尽管nextInt()将输入解析为整数,但要使用double输入,您应该使用input.nextDouble()

将其替换为array[i] = input.nextDouble();,这将使其更加完美。