如何在java中进行冒泡排序, 文本文件如下所示:
aaa
2
bbb
3
ccc
1
我需要做的是循环播放并将最高分显示为最低分。 当我运行下面的代码时,数字已经排序。它将显示3,2,然后显示1。 但是名称与相应的分数不同步,它只会根据第一个显示名称。所以如果我运行下面的代码,输出基本上会是这样的:
aaa 3
bbb 2
ccc 1
功能:
public void hi_score(){
int i=0;
try {
FileReader fr;
fr = new FileReader (new File("F:\\pscores.txt"));
BufferedReader br = new BufferedReader (fr);
int ar=0;
for(ar=0;ar<10;ar++){
player_name[ar]=br.readLine();
player_score[ar]=Integer.parseInt(br.readLine());
}
} catch (Exception e) { e.printStackTrace();}
bubble_srt(player_score, player_score.length);
System.out.print("Highscores:\n");
System.out.println("Scores");
System.out.println("Name\tScore");
for(i = 0; i <NUMBER_OF_HI_SCORE; i++){
System.out.print(player_name[i] + "\t" +player_score[i] + "\n");
}
}
如何在不使用arraylist的情况下执行此操作。只是普通的阵列。
答案 0 :(得分:2)
这是因为您只对player_score
数组进行排序:
bubble_srt(player_score, player_score.length);
您还需要将player_name
数组发送到该函数,按照之前的排序(基于分数)进行排序,每次交换两个分数时,您还必须交换名称。 / p>
答案 1 :(得分:2)
应该创建一个单独的数组,将玩家和相应的分数组合为String []; 创建一个得分为冒号的单个数组
然后你有一个有序的int [] player_score数组,你可以尝试通过String [] playername + score
中元素的子串来匹配它编辑: 所以在冒泡排序之后,当你打算打印它时,也许拿新分类的分数数组,尝试匹配String [] playername + score数组的相应元素,然后打印出与第0个匹配的元素排序得分数组的第1个,第2个值。