使用增强的for循环从两个ArrayLists中检索数据

时间:2014-10-28 09:35:37

标签: java arraylist foreach

我对我在包含的代码中遇到的(可能非常)简单问题有疑问。

代码的想法是列出所有客户及其帐户,如下面的示例所示:

Customer 1

Account 1 balance
Account 2 balance


Customer 2

Account 3 balance
Account 4 balance

..等等。 问题是所使用的代码(如下所示)与第一个客户的工作方式类似,显示了所有帐户。但它停在那里。因此,尽管存在于数据库中,但客户2将不会被打印出来。

public String allAccounts() {
    for (Customer customer : clients) {
        String clientInfo = "";
        clientInfo = clientInfo + customer.getCust() + "\n\n";
        for (Account account : customer.accounts) {
            clientInfo = clientInfo + account.getAccinfo() + "\n";
        }
        return clientInfo;
    }
    return "Not in use";
}

我可以补充一点,customer.getCust获取客户的名称,该account.getAccinfo获取帐户的帐号和余额。因为它对第一个客户起作用,我认为它是循环而不是函数本身的问题。

非常感谢任何帮助。

编辑:非常感谢大家的快速和良好的答案!非常感谢!

4 个答案:

答案 0 :(得分:1)

  • 初始化StringBuilder例如sb循环之外的for(Customer ...
  • return clientInfo更改为sb.append(clientInfo)
  • return "Not in use"替换为return sb.toString().length==0?"Not in use": sb.toString();

答案 1 :(得分:0)

当您返回某些内容(return clientInfo)时,该方法已完成。 您可能希望改为List<String>,或Map<String, String>

public List<String> allAccounts() {
    ArrayList<String> accounts = new ArrayList<String>();
    for (Customer customer : clients) {
        String clientInfo = "";
        clientInfo = clientInfo + customer.getCust() + "\n\n";
        for (Account account : customer.accounts) {
            clientInfo = clientInfo + account.getAccinfo() + "\n";
        }
        accounts.add(clientInfo);
        continue;
    }
    accounts.add("Not in use");
    return accounts;
}

答案 2 :(得分:0)

修改如下并尝试:

 public String allAccounts() {
        String clientInfo = "";
    for (Customer customer : clients) {
        clientInfo = clientInfo + customer.getCust() + "\n\n";
        for (Account account : customer.accounts) {
            clientInfo = clientInfo + account.getAccinfo() + "\n";
        }

    }

if(clientInfo.equals(""))
    return "Not in use";
else
   return clientInfo;
}

这里做了两件事,1。在forloop外面声明了clientInfo。 2.并且return语句在for循环结束之后。

答案 3 :(得分:0)

你的return语句在第一个循环中。它应该在外面。请参阅以下代码。

public String allAccounts()
{
    String clientInfo = "";
    for (Customer customer : clients)
    {
        clientInfo = clientInfo + customer.getCust() + "\n\n";
        for (Account account : customer.accounts)
        {
            clientInfo = clientInfo + account.getAccinfo() + "\n";
        }
    }
    if ("".equals(clientInfo))
    {
        return "Not in use";
    }
    return clientInfo;
}