JAVA加总

0 java return totals

我想在另一个函数中使用此函数.这个"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)

Era*_*ran 6

您应该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)