此方法必须返回double类型的结果

时间:2018-11-10 17:13:44

标签: java

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。为什么不起作用?我不明白。

6 个答案:

答案 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,则必须返回值