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