2014-10-28 41 views
-1

我有一個關於在代碼中遇到的(可能非常)簡單的問題的問題。使用增強的for-loop從兩個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"; 
} 

我想補充的是,customer.getCust得到了客戶的名稱,以及account.getAccinfo得到賬戶號碼和賬戶餘額。而且,因爲它對第一個客戶而言是有效的,我認爲這是循環的問題,而不是功能本身。

任何幫助將不勝感激。

編輯:非常感謝大家的快速和良好的答案!非常感謝!

回答

1
  • 初始化一個StringBuilder例如sbfor(Customer ...循環外,
  • 變化return clientInfosb.append(clientInfo)
  • return sb.toString().length==0?"Not in use": sb.toString();
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; 
} 
0

修改替換return "Not in use"如下,並嘗試:

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. return語句在for循環結束後。

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