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

Java方法布尔值在应该为true时返回false

丰景同
2023-03-14

我在一节课上做了这个方法。我已经仔细检查过了,应该可以正常工作了。当我使用这个方法在main方法中运行一个对象时,我总是得到一个假返回,即使它应该是真的。

print语句不打印,所以我无法检查值是否正确传递,我还尝试让if语句也返回true,但它仍然返回false!它让我头疼,因为一切在逻辑上都是正确的。

有没有一个我不知道的规则,如果出现错误,布尔方法会自动返回false?

public boolean addPartsDetails (String newDescription, double newCost) {

  System.out.println("is description empty?: " + newDescription);
  System.out.println("is cost negative?: " + newCost);

  if (newDescription.isEmpty() | newCost < 0) {   
     return false;
  }

  else {
     this.partsCost += cost;
     String newPart = String.format("\t - %s (%.2f) \n", description, cost);
     this.partsList = this.partsList.concat(newPart);
     return true;
  }
 }

在主要方法中:

 boolean addBool = tempObj.addPartsDetails(partDes, partCost);

    if(addBool) {
       System.out.println("\nPart details recorded sucessfullyfor vehicle \"" +     tempObj.getRegNum() + "\"");
    }
    else {
       System.out.println("\nError - invalid part details supplied!");
    }

共有1个答案

田志
2023-03-14

我相信你想在这里使用| |而不是|:

  if (newDescription.isEmpty() | newCost < 0) {   

换成

  if (newDescription.isEmpty() || newCost < 0) {   

|用于按位OR运算,而|用于条件OR运算

 类似资料:
  • 我有一个布尔语句,使用

  • 好的,我的问题是关于布尔返回。对于我的Comp-Sci作业,我必须使用多种方法制作一个课程注册程序,其中之一就是添加课程方法。基本上,在目录中搜索类,如果匹配,则将其添加到学生计划中,并返回布尔值true。我这么做了,但出于某种原因,这给了我一个错误。以下是代码: 为什么它不能识别布尔返回值?是因为我把它们放在了一个圈里吗?

  • 问题内容: 不出所料,空元组不包含1 但是返回的值不等于 换一种方式来看,运算符返回的a既不是也不是: 但是,如果对原始表达式加上括号,则会恢复正常行为 或其值存储在变量中 在Python 2和Python 3中都观察到此行为。 你能解释发生了什么吗? 问题答案: 您正在遇到比较运算符链接;也 没有 意思。 相反,比较是链接在一起的,该表达式的真正含义是: 因为已经为false,所以将完全忽略链接

  • 在Java8上使用Apache CXF 2.7.11实现的一些Java first SOAP服务有一个问题。当TRUE作为值传递时,值将变为null。当true以小写形式传递时,同样的方法也能很好地工作。 我看到另一个线程,其中类扩展以及解决了这个问题,但是生成的WSDL类型已经从xs:boolean更改为xs:string。这意味着使用者应将布尔值作为字符串传递。这在我的情况下是不能接受的。 J

  • 而且 不是应该都返回吗?它不是基元变量,在第二个代码中,即使在添加零之后,它也会打印。我知道装箱(对于从-128到127的整数),但是为什么装箱在第二段代码中起作用而不是在第一段代码中起作用呢?

  • 这是一个布尔方法,是我作业的一小部分。我想根据输入和记录之间是否匹配来返回true或false。我想我遇到了语法问题。 这是该方法的代码,但始终有红线指示我应该在代码中添加return,否则将该方法更改为void。但我已经在if语句中添加了return true。