我正在编写一个代码,该代码采用教师类大小,然后创建一个包含其名称和分数的数组。我们的想法是让代码按照他们的分数(不是他们的名字)对它们进行排序。我的问题是,我似乎无法将数据的得分部分提高一倍。基本上,代码只接受int输入。
我希望代码在我完成后执行此操作。
班上有多少学生? 6
姓名:Tom Smith
得分:82.5
姓名:Mary Smith
得分:92.5
姓名:Alice Falls
得分:61
姓名:Linda Newson
得分:73
姓名:杰克特纳
得分:89.3
姓名:George Brown
得分: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;
}
}
}
}
答案 0 :(得分:3)
array[i] = input.nextInt();
尽管nextInt()
将输入解析为整数,但要使用double
输入,您应该使用input.nextDouble()
。
将其替换为array[i] = input.nextDouble();
,这将使其更加完美。