Java方法布尔值在';这应该是真的

Java方法布尔值在';这应该是真的,java,object,methods,boolean,Java,Object,Methods,Boolean,我在一节课上做这个方法。我已经加倍检查了它和所有,它应该相应地工作。当我使用这个方法在main方法中运行一个对象时,我总是得到一个假返回,即使它应该是真的 print语句不打印,因此我无法检查值是否正确传入,我还尝试使if语句也返回true,但它仍然返回false!这让我头疼,因为一切都合乎逻辑 有没有一条规则我不知道,如果出现错误,布尔方法会自动返回false public boolean addPartsDetails (String newDescription, double newCo

我在一节课上做这个方法。我已经加倍检查了它和所有,它应该相应地工作。当我使用这个方法在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;
  }
 }

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

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

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

|
用于按位OR运算,而
|
用于条件OR运算。注意:忘了提到partDes和partCost已经在main方法中初始化了。如果您的print语句没有执行,则会出现其他完全错误;这些是无条件的。我认为您的程序没有达到目标是否打印“错误-提供的零件详细信息无效!”?是否打印“错误-提供的零件详细信息无效!”!这太令人沮丧了!如果方法中的print语句没有打印,会有什么问题?该方法在任何子类中都被重写了吗?这两个运算符在Java中不是按位或逻辑的,只是非短路和短路,而且OP说print语句没有被调用,所以问题在他的calli中是上游的ng代码。@RickyMutschlechner。
  if (newDescription.isEmpty() || newCost < 0) {