Boolean方法不检查if语句

时间:2015-03-22 20:18:05

标签: java arrays if-statement methods boolean

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

   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();
           }
 }

我该怎么做布尔方法呢?

3 个答案:

答案 0 :(得分:0)

我注意到的主要区别在于totWeight时它不会向return true添加任何内容。我还认为您希望使用类似

的内容重置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;
}

答案 1 :(得分:0)

您需要在for循环之前返回false,或者在检查权重小于maxWeight的条件中包含for循环。 或者您可以将当前的权重添加到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;
}

答案 2 :(得分:0)

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

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

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

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

如果为true,则返回true并保持KEEP运行方法的其余部分。 - 如果为false,则添加所有当前权重并返回false

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

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;

}