public double getBalance(int account){
for(int i=0; i<this.account.size(); i++) {
BankAccount anAccount = this.account.get(i);
if(anAccount.getAccountNumber()==account) {
double balance = anAccount.getBalance();
return balance;
}
}
}
此方法给我的错误是,该方法必须返回double类型的结果,即使我明确返回了来自getBalance()方法(返回double)的balance。为什么不起作用?我不明白。
答案 0 :(得分:3)
您在return
块中有if
条语句,因此您并不总是返回double
。所以编译器会给你错误。
您还需要另外一个return
。
答案 1 :(得分:1)
这不是因为有一个缺少return
语句。
想想如果anAccount.getAccountNumber() != account
会做什么?
处理此类情况并为此类情况返回适当/默认值时,编译错误应消失。
答案 2 :(得分:0)
您的方法有可能(如果从未找到该帐户)不返回任何内容。
答案 3 :(得分:0)
您缺少return语句,并非每个路径都返回一个值:
/**
* Takes the id of an account, returns the balance.
* @param account The account id
* @return The balance of the account or -1.0 if the account is not found.
*/
public double getBalance(int account) {
for (int i = 0; i < this.account.size(); i++) {
BankAccount anAccount = this.account.get(i);
if (anAccount.getAccountNumber() == account) {
double balance = anAccount.getBalance();
return balance;
}
}
return -1.0;
}
但是,您希望在调用此函数之前检查帐户是否存在,因为-1.0可能是有效余额,所以我只是用它来显示您所缺少的内容。
答案 4 :(得分:0)
因为对于所有for循环迭代而言,如果“ if”条件均为false,则该方法将无任何返回值...
答案 5 :(得分:0)
如果this.account.size()
为零或更小会发生什么?您的方法必须返回一个值,但尚未定义。
与内部if条件相同,如果不为true,则必须返回值