我正在编写一个代码,该代码占用教师的班级人数,然后创建一个包含其姓名和分数的数组。这个想法是为了让代码按分数(不是名称)对它们进行排序。我的问题是我似乎无法使数据的分数部分翻倍。基本上,代码仅接受int输入。

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

您班上有多少学生? 6


姓名:汤姆·史密斯

得分:82.5
姓名:玛丽史密斯

得分:92.5
名称:爱丽丝瀑布

得分:61
姓名:琳达纽森(Linda Newson)

得分:73
姓名:杰克·特纳

得分:89.3
姓名:乔治·布朗

得分:52


这是我到目前为止的内容:

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;
              }
       }
   }
}

最佳答案

array[i] = input.nextInt();


nextInt()将输入解析为整数,而采用double输入,则应使用input.nextDouble()

将其替换为array[i] = input.nextDouble();即可使其完美。

10-04 20:48