【发布时间】:2017-10-15 00:51:57
【问题描述】:
我需要编写一个程序,可以对 10 名选手的比赛时间进行排名 所以我创建了 2 个数组
跑步者的 ID(10 名跑步者)
10名选手的比赛时间(比赛时间必须小于或等于20.0秒)
我发现我的排序算法不能正确使用,我不想使用Arrays.sort(x);,因为我需要对“那些比赛时间和ID”进行排序,这是我的代码
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
String[] ID = new String[10];
double[] time = new double[10];
for (int i = 0; i < ID.length; i++) {
System.out.print("Please enter ID and times: ");
ID[i] = sc.nextLine();
time[i] = sc.nextDouble();
}
Run a = new Run(ID, time);
System.out.println("Top 3 is ");
a.Sort();
}
}
和
public class Run {
private String[] ID = new String[10];
private double[] time = new double[10];
public Run(String[] ID, double[] time) {
for (int i = 0; i < ID.length; i++) {
this.ID[i] = ID[i];
}
for (int i = 0; i < time.length; i++) {
if (time[i] <= 20.0) {
this.time[i] = time[i];
}
}
}
public void Sort() {
double tem1;
String tem2;
for (int i = 0; i < time.length; i++) {
for (int j = 0; j < time.length; j++) {
if (time[j] > time[j+1]) {
tem1 = time[j];
time[j] = time[j+1];
time[j+1] = tem1;
tem2 = ID[j];
ID[j] = ID[j+1];
ID[j+1] = tem2;
}
}
}
for (int i = 0; i < 3; i++) {
System.out.println(ID[i] + " " + time[i]);
}
}
}
所以我需要知道为什么我的排序算法不能正确使用,它在我的控制台上弹出一个错误。
还有一个问题,在输入阶段,当我输入第一个ID和时间时,如果我这样按
ID[0] -> 输入 -> 时间[0]
那么输入是正确的,但如果我按下
ID[0] -> 空格键 -> 时间[0]
那么输入错误。 为什么?我该如何解决?
【问题讨论】:
-
您是否可以使用
List和Comparable,因为它们是为您的问题而设计的?如果是,我可以发布一个答案来解释
标签: java arrays algorithm sorting