比较Java

时间:2019-04-24 14:24:56

标签: java arrays arraylist

我有两个数组。在其中一个中,我存储了对象。在第二个中,只有值。我需要将存储对象的属性与第二个数组的元素进行比较。 在下面发布的代码中,我需要将对象的第五个值与第二个数组的元素进行比较。并提出一个方法,如果值更大。有什么建议么?

    ParkedCar a1 = new ParkedCar ("Toyota", "Camry", "Blue", 672, 85);
    ParkedCar a2 = new ParkedCar ("Mitsubishi", "Pajero", "White", 988, 40);
    ParkedCar a3 = new ParkedCar ("Ferrari", "GTC4", "Yellow", 1, 220);
    ParkedCar a4 = new ParkedCar ("Perodua", "Myvi", "White", 3714, 260);
    ParkedCar a5 = new ParkedCar ("Toyota", "Prius", "Black", 1472, 367);
    ParkedCar parkingLot[] = {a1, a2, a3, a4, a5};

    ParkingMeter aa = new ParkingMeter ();
    aa.setMinutesPurchased(120);
    ParkingMeter bb = new ParkingMeter ();
    bb.setMinutesPurchased(60);
    ParkingMeter cc = new ParkingMeter ();
    cc.setMinutesPurchased(120);
    ParkingMeter dd = new ParkingMeter ();
    dd.setMinutesPurchased(150);
    ParkingMeter ee = new ParkingMeter ();
    ee.setMinutesPurchased(60);
    ParkingMeter meters[] = {aa, bb, cc, dd, ee};

4 个答案:

答案 0 :(得分:2)

据我了解,您假设parkingLotmeters的长度相同,并且meters[i].minutesPurchased包含一个指向parkingLot[i]的值。

我假设您在ParkedCarParkingMeter类中有一些getter方法可以满足您的需求。

如果是这样,唯一可行的解​​决方案是某种for循环:

for (int i = 0; i < parkingLot.length; ++i)
    if (parkingLot[i].fifthField > meters[i].minutesPurchased)
        callSomeMethod();

就个人而言,我认为将两个类之间的链接保持在两个不同的数组中是一个坏主意。可能您可以添加一些方法ParkedCar.getParkingMeter()来获得正确的答案,而无需for循环。

答案 1 :(得分:0)

实际上要在第二个数组中添加元素的参数,您必须 使用getter获取它们的值,并与第一个数组的第五个元素的值进行比较。 在您的ParkingMeter中,输入如下的getter方法:

 public double getMinutesPurchased(){
     return this.MinutesPurchased;
}

答案 2 :(得分:0)

您的问题有点含糊,所以我不确定这是否正是您想要的;但是这是我的看法。

ParkedCar 只是一个对象,对不对?因此,在创建{a1,a2 ... a5}时传递给它们的每个值都只是一个ParkedCar的属性,就像ParkingMeter一样。使用每个对象的那些属性,您可以创建“吸气剂”来比较两者。

E.G。

在您的ParkedCar类中:

public class ParkedCar{
private double attributeFive;

ParkedCar(){}

ParkedCar(String Make, String Model, String Color, double valueFour, double valueFive){
    //logic for setting values
    attributeFive = valueFive; 
}

public double getValueFive(){
    return attributeFive; 
}
}

现在此代码中缺少某些东西,例如setter,但这应该可以为您提供图片。您可以在ParkingMeter类中做同样的事情。

您现在要做的就是比较两个值(例如,使用创建对象的相同方法)。

if(a1.getValueFive < aa.getMinutesPurchesed){
 //do something
}

似乎您已经拥有大多数逻辑,但是只是缺少一个简单的比较。您可以尝试观看一些YouTube教程,以掌握Java的基本原理,我知道这就是帮助我开始的原因。

答案 3 :(得分:0)

因此,如果ParkedCar的第5个值高于所购买的分钟数,则要componentDidMount()

您可以编写一个函数来执行此操作。 包括检查两个数组的大小是否相同。 您的功能很简单

//Do Something

但是,ParkedMeter是一个非常简单的类。为什么不将其添加为ParkedCar的属性。在这种情况下,此仪表值检查只是您的ParkedCar类 for(int i = 0, i < parkingLot.getLength(), i++) { if(parkingLot[i].getFifthValue() > meters[i].getMinutesPurchased())) //DoSomething }

中的一个单线布尔函数