当前位置: 首页 > 知识库问答 >
问题:

Java将对象Int相互比较以找到准确的结果

哈朗
2023-03-14

我目前正在尝试制作一个赛车模拟器,以便学习一些Java。我制作了每个车手和他们的车的对象:

public static Driver drivers[] = new Driver[18];

每个车手都有许多价值观,这些价值观决定了他在比赛中的表现:

    int overall;
    int rating;

    int corners;
    int straightaways;
    int rain;
    int skill;
    int experience;
    int pace;
    int awareness;

然后,当我进入比赛状态并尝试模拟第一场比赛时,我得到了车手总体的变量(值为50-100),并在总体上添加了一个“运气”因素以获得结果。

package races;

import racers.CreateDrivers;
import racers.Driver;

public class RaceSimulator {
    
    //duplicating drivers Array... Do not know if I need this.
    public Driver currentRace[] = CreateDrivers.drivers.clone(); 
    
    public static void SimulateNextRace() {
        
        System.out.println("\nFirst Race is Beginning!!\n");
        
        int racedayLuck;
        int raceFinishUnsorted;
        
        for(int i = 0; i < CreateDrivers.drivers.length; i++) {
            racedayLuck = (int) (Math.random() * 20 + 1);
            
            raceFinishUnsorted = racedayLuck + CreateDrivers.drivers[i].getOverall();
                        
            CreateDrivers.drivers[i].setRacedayFinish(raceFinishUnsorted);
            System.out.println(CreateDrivers.drivers[i].getName() + ": " + CreateDrivers.drivers[i].getRacedayFinish());
        }
        
        //TODO Trying to Rank the drivers against each other and set drivers[i].setPoint 
    }
    
    public static void getRank() {
        //
    }
    
}

控制台输出示例:

First Race is Beginning!!

Joseph Morgan: 90
Malachi Nguyen: 90
Greg Hart: 76
Ian Banks: 78
Gabriel Mcdonald: 84
Spencer Meyer: 94
Jordan Soto: 95
Abraham Wells: 94
Charles Frederiks: 82
Trevor Fleming: 92
Nathaniel Nguyen: 67
Johnathan Herrera: 79
Derek Miller: 88
Grant Reynolds: 86
Kyle Bailey: 82
Conner Sullivan: 98
Paul Perry: 96
Antonio Larson: 87

我不知道如何在不排序的情况下对“CreateDrivers.drivers[x]”的所有值进行排名。

换言之:我如何在不改变任何值的情况下对车手进行排名,同时也允许自己添加到他们的“季节积分”中

我尝试向驱动程序添加一个“id”值,并将该值排序为一个数组,然后再次查找id。。。但似乎必须有一种更简单的方法来排名18个整数。

提前感谢您的帮助!

共有1个答案

傅阿苏
2023-03-14

我很不明白你想做什么,但我以为你想得到比赛的排名你可以只排序数组由Driver.getRacedayFinish();使用比较器在java和分配它的索引1它的排名像:-

   Arrays.sort(CreateDrivers.drivers, new Comparator<Integer>(){
    @Override
   public int compare(Driver d1, Driver d2) {
       // You can create compareTo method for that but I will just use this
       if (d1.getRacedayFinish() == d2.getRacedayFinish()) return 0;
       else if (d1.getRacedayFinish() < d2.getRacedayFinish()) return -1; 
      return 1;
    }
   });

这将对数组进行排序,然后只需将其索引指定为其秩,如:-

for (int i = 1; i <= drivers.length; i++) {
    drivers.setPoint[i-1] = i;
  }

我希望我能给你你想要的答案,如果你没有得到你想要的,那么你可以在问题部分解释得更清楚。

 类似资料:
  • 我有一个如下所示的Powershell数组: 我需要找到TSMserver和集群的所有VM都具有相同的值。 我需要一个命令来检索(例如)这两个VM,因为它们共享相同的第一个值。 所以实际上我需要将数组中的每个对象与其他对象进行比较,以找到前两个属性的公共值。 提前非常感谢!

  • 我理解A,我们在那里有一个原语;没有引用。by-复制。 我希望B和C的行为与D相同——根据它们被给予的引用而改变。 为什么这个对象引用另一个对象只对用户定义的对象“起作用”,而不是整数、字符串等。?

  • 问题内容: 我有上述2个类(POJO),它们都是绝对相同的(除了课程名称),我将它们添加到两个数组列表:aListA和aListB。我需要比较两个对象是否相同。如果它们相同,则需要将它们添加到另一个列表(commonList)中,如果它们恰好是不同的,则需要将它们添加到另一个列表(differentList)中。我写了以下代码: 我的问题是,即使两个不同POJO中的数据(变量,firstId和se

  • 我正在尝试创建一个二进制搜索程序,该程序可以使用各种类型的变量(int、float、string等)来查看数组中是否存在元素。我正试图找出如何比较变量。下面是我正在使用的内容的草图: 我甚至不确定使用对象是否是最好的方法。

  • 两个 NavigableString 或 Tag 对象具有相同的HTML或XML结构时, Beautiful Soup就判断这两个对象相同. 这个例子中, 2个 <b> 标签在 BS 中是相同的, 尽管他们在文档树的不同位置, 但是具有相同的表象: “<b>pizza</b>” markup = "<p>I want <b>pizza</b> and more <b>pizza</b>!</p>"

  • 两个 NavigableString 或 Tag 对象具有相同的HTML或XML结构时, Beautiful Soup就判断这两个对象相同. 这个例子中, 2个 <b> 标签在 BS 中是相同的, 尽管他们在文档树的不同位置, 但是具有相同的表象: “<b>pizza</b>” markup = "<p>I want <b>pizza</b> and more <b>pizza</b>!</p>"