我正在编写一门需要教师班级大小的代码,然后创建一个包含姓名和成绩的数组。这个想法是让代码按他们的分数排序(不是他们的名字)。我的问题是,我似乎无法使得数据的分数部分增加一倍。基本上,代码只需要int输入。取得学生姓名和成绩并按顺序排列的代码
我希望代码在完成后执行此操作。
你班上有多少学生? 6
名称:汤姆·史密斯
得分:82.5
名称:玛丽·史密斯
得分:92.5
名称:爱丽丝瀑布
得分: 61
名称:琳达·纽森
得分: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;
}
}
}
}
使用'nextDouble'而不是'nextInt'来获得'double'而不是'int'。 – resueman
我明白你是否是初学者,但更好的方法是制作一个“学生”班。并将它们存储到可以分类的'Student []'中。 –