Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/357.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何找到数组中具有特定特征的第一个元素?_Java_Arrays_Eclipse - Fatal编程技术网

Java 如何找到数组中具有特定特征的第一个元素?

Java 如何找到数组中具有特定特征的第一个元素?,java,arrays,eclipse,Java,Arrays,Eclipse,例如,如果您正在搜索一个处理零件的数组,并试图在该数组中找到具有特定权重的第一个元素。比如,如果权重为10,在parts数组中,第一个元素(part)的权重为15,第二个元素(part)的权重为10,那么它将返回该元素。这些是我使用的方法。我需要做另一个方法,我想我可能需要调用其中一个 class Robot { Part[] parts; public Robot () { // implementation is not shown } public void addPart

例如,如果您正在搜索一个处理零件的数组,并试图在该数组中找到具有特定权重的第一个元素。比如,如果权重为10,在parts数组中,第一个元素(part)的权重为15,第二个元素(part)的权重为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() {

    }
}
double searchForLen=10.00;
对于(int i=0;i

我会听从布赖恩的建议,改变体重的类型。如果您坚持使用double,您可以使用double,然后先调用double.compare()

。。。您不能使用
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;
}
public Part findFirst(整数权重)
{
//如果没有匹配项,这将允许我们返回null
p部分=空;
对于(int i=0;i
您的问题无法理解。。。请再读一遍,试着理解。。。如果你也得到解释…进一步解释@FahimParkar的评论-你尝试了什么,错误在哪里?忽略语法错误的事实,比较像那样的
double
值充其量是有问题的。他应该使用
BigDecimal
或盎司/克表示为
int
@FahimParkar我的代码根据请求返回找到的第一部分。布莱恩-语法有什么问题?@alfasin-
parts.[i].getWeight()
;这甚至不会编译。它是[i]的
部分。getWeight()
还有。。。我真的不想在这里唠叨,
Double.compare()
与使用
=
有相同的问题。请参阅以下答案:。在这里可以找到一个丑陋但信息丰富的页面详细解释:@BrianRoach你说得有道理,但我认为这有点“过火”,因为测量重量可能会产生一个xx.xx格式的数字(可以很容易地使用双数据类型进行比较),所以所有这些讨论都是过时的。
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;
}