如何在阵列中找到具有特定特征的第一个元素?

时间:2012-02-12 05:40:24

标签: java arrays eclipse

例如,如果您正在搜索处理部件的数组,并且您正在尝试查找该数组中具有特定权重的第一个元素。如果重量是10并且在零件阵列中,第一个元件(部件)的重量为15,第二个元件(部件)的重量为10,则它将返回该元件。这些是我使用的方法。我需要制作另一种方法,我想我可能需要调用其中一种方法。

class Robot {
Part[] parts;
    public Robot () { // implementation is not shown }
    public void addPart(PArt p) { // implementation not shown }
}

class Part {
// Class details not shown
    public double getWeight() {
    }
    public int get Partnum() {

    }
    public getMaterial() {

    }
}

2 个答案:

答案 0 :(得分:0)

double searchForLen = 10.00;
for (int i=0; i < parts.length; i++) {
  if (parts[i].getWeight() == searchForLen) {
    return parts[i];
  }
}

我会接受Brian的建议并更改重量的类型。如果您坚持使用双重,则可以使用 Double ,然后调用Double.compare()

答案 1 :(得分:0)

首先......你不能使用double并期望按照你的预期进行比较。浮点数不精确。您应该使用BigDecimal或更改为使用代表int的最低公共分母(例如盎司或克)作为您的体重。

之后......遍历数组,直到找到您正在寻找的重量匹配。就这么简单。

public Part findFirst(int weight)
{
    // This will allow us to return null if there's no match
    Part p = null;

    for (int i = 0; i < parts.length; i++)
    {
        // after changing getWeight() to return an int
        if (parts[i].getWeight() == weight)
        {
            p = parts[i];
            break;
        }
    }

    return p;
}