Java 如何计算大于或等于输入参数的糖果条?

Java 如何计算大于或等于输入参数的糖果条?,java,for-loop,arraylist,Java,For Loop,Arraylist,我必须创建一个方法,返回所有重量大于或等于输入参数的糖果条,在本例中大于1.75。我试着用自己的方法,但似乎不管用。。如有任何建议或帮助,将不胜感激。我将在底部发布这两种方法。。我尝试过使用forloop,但我不知道如何将数字相加 主要内容: }以下是如何计算重量大于或等于指定重量的钢筋: public static int countByWeight(ArrayList<CandyBar> list, double weight) { int countOfBarsHeav

我必须创建一个方法,返回所有重量大于或等于输入参数的糖果条,在本例中大于1.75。我试着用自己的方法,但似乎不管用。。如有任何建议或帮助,将不胜感激。我将在底部发布这两种方法。。我尝试过使用forloop,但我不知道如何将数字相加

主要内容:


}

以下是如何计算重量大于或等于指定重量的钢筋:

public static int countByWeight(ArrayList<CandyBar> list, double weight)
{
    int countOfBarsHeavierOrEqual = 0;
    for(int i = 0; i < list.size(); i++){
        if(list.get(i).getWeight() >= weight){
            countOfBarsHeavierOrEqual++; 
        }
    }
    return countOfBarsHeavierOrEqual;
}
然后修复此执行:

int index = findCandyBar(bars, "Mounds");
if(index == -1){    // <-- check for -1 to see if not found
然后,无论您想返回什么内容,都没有找到,或者没有对其进行测试:

return NOT_FOUND;
。。。或者

if(index == NOT_FOUND){
试试这个:

public static int countByWeight(ArrayList<CandyBar> list, double weight) {
    return (int)list.stream().map(CandyBar::getWeight).filter(w -> w >= weight).count();
}
公共静态int countByWeight(数组列表,双权重){
return(int)list.stream().map(CandyBar::getWeight).filter(w->w>=weight.count();
}

请注意,您的代码忽略了
weight
参数,而将
1.70
硬编码为阈值。

这里的问题:
if(list.get(i).getName()==n){
不要使用
==
!=
来比较字符串。使用
等于(…)
等于(…)
方法。请理解,
==
检查两个对象引用是否相同,这不是您感兴趣的。另一方面,这些方法检查两个字符串是否具有相同顺序的相同字符,这在这里很重要。此外,
countByWeight(…)
不计数,但如果发现任何与所需重量匹配或超过所需重量的糖果条,则会立即返回。这对您有逻辑意义吗?因此,您在基本逻辑方面存在问题,而不是在编码语法方面。我对这一点仍然很陌生,但我明白您的意思。那么如何使该方法返回的糖果条数大于n 1.75?每次看到权重更大的条形图时,都需要一个计数器变量来递增。然后,完成循环后,返回计数器变量。现在这很有意义。感谢您的帮助!!正确-如果OP使用的是Java8+。@Jason Java8???引用:JavaSE8已经完成了较旧版本的公共更新过程Java8在世界各地仍在使用。仅仅因为Java8已经完成了公共更新,并不意味着它或它的前身不再工作或不再被使用。别误会,我是Streams的支持者。你的解决方案是我通常的做法。我只是认为学习Java的人也应该学习“旧”的做法让他们了解事物是如何运作的。
int index = findCandyBar(bars, "Mounds");
if(index == -1){    // <-- check for -1 to see if not found
private static final int NOT_FOUND = -1;
return NOT_FOUND;
if(index == NOT_FOUND){
public static int countByWeight(ArrayList<CandyBar> list, double weight) {
    return (int)list.stream().map(CandyBar::getWeight).filter(w -> w >= weight).count();
}