【问题标题】:Java find greatest integer in array listJava在数组列表中找到最大的整数
【发布时间】:2014-03-11 20:08:15
【问题描述】:

我正在尝试运行一个 for 循环,在数组列表中打印每个用户的分数。 但是,我不知道如何输出得分最高/最高的人。有人可以帮帮我吗?

for (int i = 0; i < playersList.size(); i++) {

        System.out.println("Player " + (i + 1) + ", "
                + playersList.get(i).getName() + " Score: " + playersList.get(i).getTotalScore());
        playersList.get(i).getFrameScores();


        System.out.println("**************");

    }

【问题讨论】:

    标签: java loops arraylist integer compare


    【解决方案1】:

    首先,对列表中的元素进行一次迭代,找到最高分数。然后,使用另一个迭代来寻找谁的玩家得分最高并打印出来。

    这是上述算法的伪代码:

    int maxScore <- Integer.MIN_VALUE
    for each player in playerList
        if maxScore < player->score then
            maxScore <- player->score
        end if
    end for
    //now you have the max score
    for each player in playerList
        if player-> score == maxScore then
            show player info
        end if
    end for
    

    【讨论】:

    • @user2864740 你说的 JOBOL、Java + Cobol 或类似的东西是什么意思?
    • 是的 :-) 但是,我确实喜欢这个答案(尽管我允许自己这样做),因为它还解决了多人可以拥有相同最高分数的情况。
    • @user2864740 好吧,对于简单的任务来说,没有必要变得太复杂:)。此外,由于它是伪代码,如果需要进行分数比较,实现可以使用Comparator
    【解决方案2】:

    试试这个:

    double maxScore = playersList.get(0).getTotalScore();
    ArrayList<String> maxNames = new ArrayList();
    maxNames.add(playersList.get(0).getName());
    for (int i = 1; i < playersList.size(); i++) {
        if(playersList.get(i).getTotalScore() > maxScore) {
            maxScore = playersList.get(i).getTotalScore();
            maxNames.clear();
        }
        if(playersList.get(i).getTotalScore() >= maxScore ) {
            maxNames.add(playersList.get(i).getName());
        }
    }
    StringBuilder names = "";
    for(int i=0; i<maxNames.size(); i++) {
        names.append(maxNames.get(i));
        if(i != maxNames.size() - 1) {
            names.append(", ");
        }
    }
    System.out.println("The player" + (maxNames.size() > 1 ? "s" : "") + " with the highest score " + (maxNames.size() > 1 ? "are" : "is") + " " + names + ", with a score of " + maxScore + ".");
    

    【讨论】:

    • 如果有几个玩家得分最高怎么办?
    • @LuiggiMendoza 它将输出第一个以获得最高分。我会解决的。
    • 已修复。它现在将输出 所有 个得分最高的玩家。
    【解决方案3】:

    将第一个值指定为最大值并比较每个即将到来的值。如果即将到来的值很大,则将其设置为最大值并与剩余值进行比较。

    前任

    var max =0;
    
    for(i=o;i<5;i++) {
      if(i==0){ var max = a[i]; }
    
       if(max < a[i]) {
          max= a[i];
       }
    }
    
    alert(max);
    

    【讨论】:

    • 这不是JavaScript吗?
    • 是的,这是javascript,但你可以对java采用相同的逻辑来实现结果。
    猜你喜欢
    • 2022-11-21
    • 1970-01-01
    • 2019-08-31
    • 2012-09-05
    • 2021-04-17
    • 2020-11-28
    • 2016-06-24
    • 1970-01-01
    • 2018-11-27
    相关资源
    最近更新 更多