我对我在包含的代码中遇到的(可能非常)简单问题有疑问。
代码的想法是列出所有客户及其帐户,如下面的示例所示:
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获取帐户的帐号和余额。因为它对第一个客户起作用,我认为它是循环而不是函数本身的问题。
非常感谢任何帮助。
编辑:非常感谢大家的快速和良好的答案!非常感谢!
答案 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;
}