比较java中数组的元素

问题描述 投票:0回答:4

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

    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};
java arrays arraylist
4个回答
0
投票

所以如果ParkedCar的第5个值高于购买的分钟数,你想要//Do Something

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

   for(int i = 0, i < parkingLot.getLength(), i++) {
        if(parkingLot[i].getFifthValue() > meters[i].getMinutesPurchased()))
               //DoSomething
   }

但是,ParkedMeter是一个非常简单的类。为什么不将它作为属性添加到ParkedCar。在这种情况下,此仪表值检查只是您的ParkedCar类return fifthValue > minutesPurchased;中的oneliner布尔函数


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循环。


0
投票

你的问题有点模糊,所以我不确定这是不是你的意思;但这是我的看法。

ParkedCar只是一个对象吗?因此,在创建{a1,a2 ... a5}时传递给它的每个值都只是ParkedCar的属性 - 就像ParkingMeter一样。利用每个对象的这些属性,您可以制作“getters”来比较这两个对象。

EG

在你的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的基本原则 - 我知道这是帮助我开始的原因。


0
投票

实际上要在第二个数组中加入元素的参数,你必须使用getter来获取它们的值并与第一个数组的第五个元素值进行比较。在你的ParkingMeter中放置一个这样的getter方法:

 public double getMinutesPurchased(){
     return this.MinutesPurchased;
}
© www.soinside.com 2019 - 2024. All rights reserved.