Java 如何找到数组中具有特定特征的第一个元素?
例如,如果您正在搜索一个处理零件的数组,并试图在该数组中找到具有特定权重的第一个元素。比如,如果权重为10,在parts数组中,第一个元素(part)的权重为15,第二个元素(part)的权重为10,那么它将返回该元素。这些是我使用的方法。我需要做另一个方法,我想我可能需要调用其中一个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
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;
}