不兼容的返回类型错误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没有语法错误代码>,这是有效的语法。