我正在为类进行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它对我来说似乎很好所以我必须有某种语法错误,任何人都可以发现我的错误?
谢谢你!答案 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;
}