使用getter从ArrayList中获取Object

时间:2014-01-06 11:04:15

标签: java arraylist

我正在为类进行Bank系统练习,并且我有一个get函数,使用帐户ID从ArrayList中获取Account对象,它看起来像这样:

“帐户”是一个班级, “accounts”是ArrayList, “id”是对象帐户

的值之一
public Account getAccount(int id){


    for (Account account : accounts) {
        if(((Account)account).getId()==id){
            return  ((Account)account); 

        }
    } 

}

然而该函数声称没有return语句(我在Eclipse上工作,这是它向我显示的错误)logcally它对我来说似乎很好所以我必须有某种语法错误,任何人都可以发现我的错误?

谢谢你!

6 个答案:

答案 0 :(得分:4)

如果你定义一个返回值,你必须提供一个:

public Account getAccount(int id){
    Account found = null;
    for (Account account : accounts) {
        if(((Account)account).getId()==id){
            found = ((Account)account); 
            break;
        }
    } 
    return found;
}

public Account getAccount(int id){
    for (Account account : accounts) {
        if(((Account)account).getId()==id){
            return ((Account)account); 
        }
    } 
    return null;
}
在我的示例中,

found可以为null,但您将始终返回Account或null。

顺便说一句。你应该使用这样的通用列表:

    List<Account> accounts;

优点是没有必要的类型转换。

答案 1 :(得分:0)

如果列表中存在具有该特定ID的帐户,则函数返回的唯一方法是。您需要一个return语句来处理具有该特定ID的帐户不存在的情况。话虽如此,多个返回语句通常都是不好的做法所以我推荐这样的东西:

public Account getAccount(int id) throws AccountNotFoundException{

    Account acc = null;
    for (Account account : accounts) {
        if(((Account)account).getId()==id){
            acc = (Account) account;
        }
    } 
    if(acc == null) throw new AccountNotFoundException();
    return acc;

}

答案 2 :(得分:0)

它期望“独立于任何条件”返回一个Account对象。只有在

时才返回帐户
if(((Account)account).getId()==id){
            return  ((Account)account); 

在函数末尾添加return null; ...

答案 3 :(得分:0)

你需要在for循环之后有一个return语句。

此外,您的代码中不需要所有这些括号。

public Account getAccount(int id){
    for (Account account : accounts) {
        if (account.getId()==id){
            return account; 
        }
    } 
    return null;
}

答案 4 :(得分:0)

试试这个

 Account temp=null;

    if(((Account)account).getId()==id){
    temp=(Account)account); 
    }
    return temp;

答案 5 :(得分:0)

如果没有帐户与传递的ID匹配,您必须确保返回null

public Account getAccount(int id){

        for (Account account : accounts) {
            if(account.getId()==id){
               return (account); 

            }
        } 
    return null;

    }