对整数数组进行排序,同时它具有记分板的String数组

时间:2014-11-30 03:09:09

标签: java arrays sorting bubble-sort

我正在为即时创建的游戏制作记分牌,但我需要制作一个记分牌,它将使用冒泡排序算法按照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]; }
}

2 个答案:

答案 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()用于打印语句。