我正在为即时创建的游戏制作记分牌,但我需要制作一个记分牌,它将使用冒泡排序算法按照decesding顺序对分数进行排序。但是,排序得分列表的相应名称会混淆不清。我已经搜索了一个答案,但是他们完成了array.sort,这不是我自己的排序算法。 请帮助我对分数进行排序,同时将正确的名称打印在旁边。
现在让我们说:
int[] scores={6,3,15,12};
String[] names={"player1","player2","player3","player4"};
public static void results(String [] names, int [] results) {
int temp;
boolean sorted=false;
while(sorted==false) {
sorted = true;
for(int i=0; i<results.length-1; i++) {
if(results[i] < results[i+1]) {
temp = results[i];
results[i]=results[i+1];
results[i+1] = temp;
sorted = false;}
}
}
for(int i=0; i<results.length; i++) {
print("In position " + (i+1) + " is " + names[i] + " with " + results[i] + " points.");}
}
public static void resultscalc(int [] score, int [] results) {
for(int i=0; i<score.length; i++) {
results[i] = score[i]; }
}
答案 0 :(得分:0)
使用面向对象的编程。它很难&#34;维护并行数组。创建数据类型要容易得多,比如Player
保存名称和分数,然后实现Comparable
界面并根据它进行排序(或者只使用自定义排序进行排序) Player
对象的得分值。
答案 1 :(得分:0)
如果您真的必须这样做,您可以添加另一个临时变量,并在交换结果的同时交换名称中的项目。即。只需复制if语句中的前3行。
但最好是制作一个具有名称和结果的Player类,然后对一组玩家进行排序。 看起来像这样
if(players[i].getResult() < players[i+1].getResult()) {
temp = players[i];
players[i]=players[i+1];
players[i+1] = temp;
sorted = false;}
}
然后只是播放器[i] .getName()用于打印语句。