2014-12-07 86 views
1

真的卡住了這個,所以任何幫助表示讚賞我只是一個初學者基本上我有3類稱爲帳戶,地址& AccountCollection在AccountCollection我必須創建一個布爾搜索,將打印一個單一的帳戶給出一個帳號使用Account類的方法。如果這是無效的,它應該輸出「賬號與帳號:[accountNumber]未找到。」搜索陣列與布爾

的代碼,我至今

public boolean getAccount(String accountNumber) 
{ 
    for (Account account : accounts) 
    { 
     if (account.getAccountNumber().equals(accountNumber)) 
     { 
      account.printAccountDetails(); 
      System.out.println(); 
      return true; 
     } 

    } 
    return false; 

} 

這似乎工作,直到我把一個錯誤的值,那麼它給了我一個空指針異常61任何幫助將是輝煌的感謝

+4

這意味着第61行中的一個對象是'null'。看看這條線,並檢查爲什麼他們每個都是'空'。沒有語境,任何人都不可能找到答案。 – khelwood 2014-12-07 17:27:39

+0

帳號可能返回'int' *(或者我會假設)* - 如果是這樣,那麼您應該通過'=='而不是'.equals()'進行比較。 但是,您正在收到第61行中的「NPE」,因此您必須向我們顯示該行以瞭解發生了什麼。 – Juxhin 2014-12-07 17:29:26

+0

嗨賬號是一個字符串,第61行是上面的那一行if(account.getAccountNumber()。equals(accountNumber)) – chris 2014-12-07 17:35:59

回答

0

數組列表和類似結構接受添加空對象。

ArrayList<String> asd = new ArrayList<>(); 
    asd.add(null); 
    asd.get(0).substring(0); // it will crash here on calling substring() for null object. 

您必須檢查您在哪裏添加空帳戶。並修復它,除非它是接受空對象的要求。

如果您接受空對象帳戶執行以下在您的搜索方法將空對象跳到下一個。

public boolean getAccount(String accountNumber) 
{ 
    for (Account account : accounts) 
    { 
     if(account != null) 
     { 
      if (account.getAccountNumber().equals(accountNumber)) 
      { 
       account.printAccountDetails(); 
       System.out.println(); 
       return true; 
      } 
     } 
    } 
    return false; 
} 
-1

嘗試增加

public boolean getAccount(String accountNumber) 
{ 
    for (Account account : accounts) 
    { 
     if(account == null) { 
      return false; 
     } 
     if (account.getAccountNumber().equals(accountNumber)) 
     { 
      account.printAccountDetails(); 
      System.out.println(); 
      return true; 
     } 

    } 
    return false; 

} 
+0

他可能在列表中間有一個空賬戶。您的解決方案將不會搜索空帳戶後的帳戶。 – hasan83 2014-12-07 17:40:32