我有两个数组。在其中一个中,我存储了对象。在第二个中,只有值。我需要将存储对象的属性与第二个数组的元素进行比较。 在下面发布的代码中,我需要将对象的第五个值与第二个数组的元素进行比较。并提出一个方法,如果值更大。有什么建议么?
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};
答案 0 :(得分:2)
据我了解,您假设parkingLot
和meters
的长度相同,并且meters[i].minutesPurchased
包含一个指向parkingLot[i]
的值。
我假设您在ParkedCar
和ParkingMeter
类中有一些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
}