我想在另一个函数中使用此函数.这个"addTotal"函数的作用是返回某个客户端拥有的每个bankAccount的总余额.我知道插入"返回总数"; 声明,它只获得第一个bankAccount余额.对此有何建议?
private int addTotal(ClientList clientList, String name)
{
for(int i = 0 ; i<clientList.getClientList().size();i++)
{
if(name.compareTo(clientList.getClientList().get(i).getName())==0)
{
for(int j =0;j<clientList.getClientList().get(i).getBankAccList().size();j++)
{
int total = clientList.getClientList().get(i).getBankAccList().get(j).showBalance();
total+=total;
return total; // i know here is the problem. any suggestion on this?
}
}
}
return -2;
}
Run Code Online (Sandbox Code Playgroud)
您应该total在方法的开头声明变量并在循环结束时返回它:
private int addTotal(ClientList clientList, String name)
{
int total = 0;
for(int i = 0 ; i<clientList.getClientList().size();i++) {
if(name.compareTo(clientList.getClientList().get(i).getName())==0) {
for(int j =0;j<clientList.getClientList().get(i).getBankAccList().size();j++) {
total+=clientList.getClientList().get(i).getBankAccList().get(j).showBalance();
}
}
}
return total;
}
Run Code Online (Sandbox Code Playgroud)
编辑:
您可以通过引入局部变量使代码更具可读性:
private int addTotal(ClientList clientList, String name)
{
int total = 0;
for(int i = 0 ; i<clientList.getClientList().size();i++) {
Client client = clientList.getClientList().get(i);
if(name.compareTo(client.getName())==0) {
for(int j =0;j<client.getBankAccList().size();j++) {
total+=client.getBankAccList().get(j).showBalance();
}
}
}
return total;
}
Run Code Online (Sandbox Code Playgroud)
甚至更好,通过使用增强的for循环(我对你的类的名称做了一些猜测):
private int addTotal(ClientList clientList, String name)
{
int total = 0;
for(Client client : clientList.getClientList()) {
if(name.compareTo(client.getName())==0) {
for(BankAccount acct : client.getBankAccList()) {
total+=acct.showBalance();
}
}
}
return total;
}
Run Code Online (Sandbox Code Playgroud)
通过使用Java 8 Streams,您可以使其更短:
private int addTotal(ClientList clientList, String name)
{
return clientList.getClientList()
.stream()
.filter(c -> name.compareTo(c.getName())==0)
.flatMap(c -> c.getBankAccList().stream())
.mapToDouble(BankAccount::showBalance)
.sum();
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1313 次 |
| 最近记录: |