布尔方法不检查 if 语句

Boolean method is not checking if statment

我正在尝试编写布尔方法,但它不起作用

   public  boolean addPresent(Present present)
   {
      if(totWeight+present.getWeight()<=maxWeight)
      {
          presents.add(present);
          presents1.add(present);
          return true;

      }
          for(Present pres : presents1)
          {
          totWeight+=pres.getWeight();
          }return false;
   }

如果我写这个方法就可以了:

 public  void addPresent(Present present)
  {
       if(totWeight+present.getWeight()<=maxWeight)
      {
          presents.add(present);
          presents1.add(present);
         System.out.println("true");

      }else
      {             System.out.println("false");
      }
          for(Present pres : presents1)
          {
          totWeight+=pres.getWeight();
           }
 }

我应该如何为它创建布尔方法?

我注意到的主要区别是,当您 return true 时,它不会向 totWeight 添加任何内容。我还认为您想用

之类的东西重置 total
public boolean addPresent(Present present) {
    boolean r = false;
    if (totWeight + present.getWeight() <= maxWeight) {
        presents.add(present);
        presents1.add(present);
        r = true;
    }
    totWeight = 0; // <-- reset total.
    for (Present pres : presents1) {
        totWeight += pres.getWeight();
    }
    return r;
}

您需要在 for 循环之前 return false,或者将 for 循环包含在您检查权重是否小于 maxWeight 的条件中。 或者你可以直接把礼物的重量加到totWeight上,不需要for循环。

public  boolean addPresent(Present present){

    if(totWeight+present.getWeight()<=maxWeight){
        presents.add(present);
        presents1.add(present);
        totWeight += present.getWeight();
        return true;
    }
    return false;
}

在清理格式并比较您描述的两种方法后,我注意到一个主要的逻辑错误。

在第一种方法中,您执行以下操作:

如果为真,return 为真并停止 运行 方法的其余部分。 - 如果为假,则添加所有当前权重和 return false

在第二种方法中,您执行以下操作:

如果为真,return 为真并保留 运行 方法的其余部分。 - 如果为假,则添加所有当前权重和 return false

如果第一种方法是您想要的方法,请在方法的开头声明一个布尔值,并根据测试结果将其设置为 true 或 false,return 改为该布尔值.这样你就可以推迟实际的 return 语句,直到你完成计算。

public  boolean addPresent(Present present)
{
    boolean temp = false;
    if(totWeight+present.getWeight()<=maxWeight)
    {
        presents.add(present);
        presents1.add(present);
        temp = true;
    }
    for(Present pres : presents1)
    {
        totWeight+=pres.getWeight();
    }
    return temp;

}