Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/386.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/jpa/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
不兼容的返回类型错误java_Java - Fatal编程技术网

不兼容的返回类型错误java

不兼容的返回类型错误java,java,Java,我做错了什么?一个void方法不能返回someting。并且具有返回类型的方法必须返回方法签名中指定的类型 错误1 例如,看看这个方法 BankAccount.java:34: error: incompatible types: unexpected return value return accountnumber; ^ BankAccount.java:47: error: incompatible types: unexpected return value return

我做错了什么?

一个
void
方法不能
返回
someting。并且具有返回类型的方法必须返回方法签名中指定的类型

错误1

例如,看看这个方法

BankAccount.java:34: error: incompatible types: unexpected return value
return accountnumber;
       ^
BankAccount.java:47: error: incompatible types: unexpected return value
return this.accountbalance=this.accountbalance+amount;
                          ^
2 errors
Yo无法从
void
方法返回

那应该是

 public void setAccountNumber(int accountnumber) {
   return accountnumber;
   }
public void deposit(double amount) {
        return this.accountbalance = this.accountbalance + amount;
    }
其他方法也是如此

错误2

  public void setAccountNumber(int accountnumber) {
           this.accountnumber =accountnumber;
       }
返回语句在语法上是错误的。您不能返回,因为它是无效的。那应该是

 public void setAccountNumber(int accountnumber) {
   return accountnumber;
   }
public void deposit(double amount) {
        return this.accountbalance = this.accountbalance + amount;
    }
这里您的返回类型是
void
,您的返回类型是
int

public void setAccountNumber(int accountnumber) {
 return accountnumber;
 }
public int setAccountNumber(int accountnumber) {
//     ^^^
    return accountnumber;
}

public double deposit(double amount) {
//     ^^^^^^
    return this.accountbalance=this.accountbalance+amount;
}
…您是否试图在
void
-返回函数中返回

这是正确的:

public void setAccountNumber(int accountnumber) {
    return accountnumber;
}

public void deposit(double amount) {
    return this.accountbalance=this.accountbalance+amount;
}

Forst错误是meyhod的返回类型为
void
,方法返回
int

public void setAccountNumber(int accountnumber) {
 return accountnumber;
 }
public int setAccountNumber(int accountnumber) {
//     ^^^
    return accountnumber;
}

public double deposit(double amount) {
//     ^^^^^^
    return this.accountbalance=this.accountbalance+amount;
}
将其更改为:

 public void setAccountNumber(int accountnumber) {
    return accountnumber;
 }
第二件事是,对于用于获取变量的方法来说,这不是一个好名称,请将方法名称更改为:

 public int setAccountNumber(int accountnumber) {
    return accountnumber;
 }
还有一件事,你的方法

 public int getAccountNumber(int accountnumber) { // why is this argument???
    return accountnumber;
 }
有同样的错误。应该是:

public void deposit(double amount) {
     return this.accountbalance = this.accountbalance + amount;
}

到目前为止,每个答案都是正确的,并指出了问题。这里有一个还没有提到

您的
equals
方法没有正确地覆盖父对象:

public double deposit(double amount) { //change void to double
    return this.accountbalance + amount; //as suggested by SURESH ATTA
}
Object
上的
equals
的签名是
public boolean equals(Object other)
,因此任何对象都可以相互比较。您已将其更改为仅允许与其他银行帐户进行比较,这违反了合同

请尝试以下方法:

public boolean equals(BankAccount ba) {
    return this.accountbalance == ba.accountbalance;
}

您返回的代码是错误的。格式化您的代码不仅会使其他人更容易看到您代码中的问题,而且也会使您看到这些问题。编译器错误非常有用。返回值是意外的,因为您将方法声明为
void
,这意味着它们无法返回任何值。
您无法在构造函数中声明变量
为什么不?虽然它在语义上显然是错误的代码,但在语法上不是没有问题吗?Re:error 1,你可以在构造函数中声明变量,只是这个构造函数不太可能像OP所期望的那样。另外,
return
语句w/赋值在语法上不是错误的。@ikh Yes。我反复核对了一下。已编辑。
返回this.accountbalance=this.accountbalance+amount没有语法错误,这是有效的语法。