当前位置: 首页 > 知识库问答 >
问题:

布尔方法不检查是否声明

魏彦
2023-03-14

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

   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个答案

曾光远
2023-03-14

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

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

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

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

如果true,返回true并继续运行该方法的其余部分。-如果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;

}

凌长恨
2023-03-14

我注意到的主要区别是,当返回true时,它不会向总重量添加任何内容。我还认为您想用类似的方法重置总计

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

孔硕
2023-03-14

您需要在for循环之前返回false,或者在检查权重小于maxWeight的条件中包含for循环。或者你可以只添加当前的重量到总重量,不需要循环。

public  boolean addPresent(Present present){

    if(totWeight+present.getWeight()<=maxWeight){
        presents.add(present);
        presents1.add(present);
        totWeight += present.getWeight();
        return true;
    }
    return false;
}
 类似资料:
  • 问题内容: 如何检查布尔值是否为null?因此,如果我知道“ hideInNav”为空。如何阻止它进一步执行?像下面这样的东西似乎不起作用,但是为什么呢? 问题答案: 只能是或因为它是原始数据类型(+ 变量的默认值为)。如果要使用值,则可以改用类。布尔是一种引用类型,这就是您可以分配给布尔“变量”的原因。例:

  • 问题内容: 我有一个的条目: 目前,我正在检查它是否包含真像这样: 这是检查布尔数组的 最快 方法吗?如果不是,执行此检查的最快方法是什么? 编辑: 通过在Android 4.03 Samsung S2设备上将其作为应用程序运行,我对您的答案中的方法进行了计时,如下所示: 在五次跑步中的时间排名最高,排名第一: 在5334和11584 ns之间: } return false; 在160542和1

  • 问题内容: 因此,我听说如果将2个字符串与==进行比较,则只有它们都引用相同的对象/实例时,我才会返回true。那是琴弦。布尔呢? 问题答案: ==是否检查布尔值是否完全相等?-Java 这取决于您是在谈论s(对象包装,请注意大写)还是s(原始,请注意小写)。如果您在谈论s(对象包装器),就像处理所有对象一样,请检查 身份 ,而不是对 等 。如果您在谈论s(基元),它将检查是否相等。 所以: 但

  • 我需要一个可以在junit 方法中调用的方法,该方法比较两个布尔值以检查它们是否相等,并返回一个布尔值。例如,类似这样的事情: 如果不相等,则返回false,如果相等,则返回true。我已经检查了布尔类,但是唯一接近的是< code>Boolean.compare(),它返回一个int值,我不能使用这个值。

  • 除了相等检查,Jasmine还提供了一些方法来检查布尔条件。 以下是帮助我们检查布尔条件的方法。 toBeTruthy() 此布尔匹配器在Jasmine中用于检查结果是等于true还是false。 以下示例将帮助我们理解toBeTruthy()函数的工作原理。 ExpectSpec.js describe("Different Methods of Expect Block",function (

  • 问题内容: 一位访问员最近问我这个问题:给定三个布尔变量a,b和c,如果三个变量中至少有两个是true,则返回true。 我的解决方案如下: 他说,这可以进一步改善,但是如何呢? 问题答案: 而不是写: 写: 至于表达式本身,是这样的: 或此(无论您觉得更容易掌握): 它测试和准确一次,最多一次。 参考文献 JLS 15.25条件运算符?: