有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java使用增强的forloop从两个ArrayList检索数据

我有一个问题是关于我在所包含的代码中遇到的一个(可能是非常)简单的问题

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

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";
}

我可以补充一点,那就是客户。getCust获取客户的名称和该帐户。getAccinfo获取帐户的帐号和余额。由于它是为第一个客户设计的,我想这是循环的问题,而不是函数本身的问题

任何帮助都将不胜感激

编辑:非常感谢大家快速而好的回答!非常感谢


共 (4) 个答案

  1. # 1 楼答案

    • 初始化一个StringBuilder例如sbfor(Customer ...循环之外
    • return clientInfo更改为sb.append(clientInfo)
    • return "Not in use"替换为return sb.toString().length==0?"Not in use": sb.toString();
  2. # 2 楼答案

    按如下所示进行修改,然后重试:

     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。clientInfo在forloop外部声明。2.返回语句在for循环结束后

  3. # 3 楼答案

    当您返回某个内容(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;
    }
    
  4. # 4 楼答案

    您的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;
    }