第一次发帖! 我有一项作业要求我编写一个 Java 程序,该程序从文本文件中读取数据并根据分数及其首字母对其进行排序。 文本文件如下:
John Doe 75
Joe Blow 65
Mary Smith 80
John Green 82
Jill White 97
这是我的代码:
import java.util.Scanner;
public class HelloWorld{
public static void main(String[] args) throws Exception{
String[] firstName = new String[5];
String[] lastName = new String[5];
int score[] = new int[5];
java.io.File file = new java.io.File("data.txt");
Scanner input = new Scanner(file);
int c=0;
while(input.hasNext()){
firstName[c] = input.next();
lastName[c] = input.next();
score[c] = input.nextInt();
c++;
}
input.close();
MichaelBubbleSort(score);
for(int x=4;x>=0;x--){
System.out.print(firstName[x].substring(0,1) + lastName[x].substring(0,1) + " " + score[x]);
System.out.println();
}
}
public static void MichaelBubbleSort(int[] arr){
int temp;
for(int i=0; i < arr.length-1; i++){
for(int j=1; j < arr.length-i; j++){
if(arr[j-1] > arr[j]){
temp=arr[j-1];
arr[j-1] = arr[j];
arr[j] = temp;
}
}
}
}
但由于某种原因,它总是出现:
JW 97
JG 82
MS 80
JB 75
JD 65
输出应该是:
JW 97
JG 82
MS 80
JD 75
JB 65
这种情况持续发生的原因是什么?
最佳答案
这是根据您的代码的解决方案。但代码必须比这个更好。你应该使用集合类。 在此代码中,您需要相应地交换名称。
import java.util.Scanner;
public class HelloWorld{
public static void main(String[] args) throws Exception {
String[] firstName = new String[5];
String[] lastName = new String[5];
int score[] = new int[5];
java.io.File file = new java.io.File("D:\\test.txt");
Scanner input = new Scanner(file);
int c = 0;
while (input.hasNext()) {
firstName[c] = input.next();
lastName[c] = input.next();
score[c] = input.nextInt();
c++;
}
input.close();
MichaelBubbleSort(score,firstName,lastName);
for (int x = 4; x >= 0; x--) {
System.out.print(firstName[x].substring(0, 1)
+ lastName[x].substring(0, 1) + " " + score[x]);
System.out.println();
}
}
public static void MichaelBubbleSort(int[] arr,String[] firstName, String[] lastName) {
int temp;
String tempFirstName,tempLastName;
for (int i = 0; i < arr.length - 1; i++) {
for (int j = 1; j < arr.length - i; j++) {
if (arr[j - 1] > arr[j]) {
temp = arr[j - 1];
arr[j - 1] = arr[j];
arr[j] = temp;
tempFirstName = firstName[j -1];
firstName[j - 1] = firstName[j];
firstName[j] = tempFirstName;
tempLastName = lastName[j -1];
lastName[j - 1] = lastName[j];
lastName[j] = tempLastName;
}
}
}
}
}
关于java - 为什么我的冒泡排序不起作用? java ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29787284/