2012-03-24 38 views
-1
  1. 試圖僅比較和打印具有不活動狀態的成員。問題是它不會搜索數組並檢查每個元素的狀態。如果第一個元素具有「活動」狀態,則會打印錯誤消息並且不會繼續檢查其他元素。
  2. 如果第一個元素的狀態爲「無效」,將打印,但它看起來像這樣在輸出之前拋出一個異常:試圖比較和打印僅非成員狀態的成員

    異常線程「main」顯示java.lang.NullPointerException在 GymAss.MemberTest .AllInactive(MemberTest.java:293)在 GymAss.MemberTest.main(MemberTest.java:58)

  3. 帳戶號碼:1名:1日期:1種狀態:閒置類型:1分的任何 幫助將不勝不勝感激!下面的代碼:

....

public static void AllInactive() 

    { 
    int check=0; 
    do 

     { 
     if (accounts[check] instanceof Student && accounts[check].getStatus().equals("INACTIVE"))     
     { 


      System.out.printf("\nAccount Number: %d \nName: %s \nDate: %d \nStatus: %s \nType: %s \n" , accounts[check].getIdNumber(),accounts[check].getName(),accounts[check].getDateJoined(),accounts[check].getStatus(),accounts[check].getMemberType()); 
      check++; 

     } 
     else if (accounts[check] instanceof Adult && accounts[check].getStatus().equals("INACTIVE")) 
      { 


       System.out.printf("\nAccount Number: %d \nName: %s \nDate: %s \nStatus: %s \nType: %s \n" , accounts[check].getIdNumber(),accounts[check].getName(),accounts[check].getDateJoined(),accounts[check].getStatus(),accounts[check].getMemberType()); 
       System.out.print("\n"); 
       check++; 


      } 
     else 
     { 
     System.out.println("**Account Does Not Exist**"); 
     } 

     } while (accounts[check].getStatus().equals("INACTIVE")); 

} 
+0

哪條線是293?你用調試器調試一下,並檢查這一行中哪個變量爲'null'。 – amit 2012-03-24 23:45:29

+0

爲什麼你做同樣的情況兩次? – 2012-03-24 23:49:13

+0

我使用相同的條件兩次,因爲我最初有(帳戶[檢查]!=空);它會無限循環令我討厭的錯誤陳述。 – jibbajava 2012-03-24 23:58:14

回答

0

只是爲了確保我們是在談論同樣的事情:據我瞭解,你有一個包含個人賬戶的數組。你想要做的是獲得當前處於非活動狀態的所有帳戶,而不是其他任何內容。

爲什麼如果你找到一個活躍的賬戶,你會停止你的循環?如果您有一個非活動帳戶,然後是活動再次處於非活動狀態,則您的循環將停止在活動帳戶,因爲while(accounts[check].getStatus().equals("INACTIVE"))的條件爲false。你想檢查整個數組,所以你必須遍歷整個數組。這可以用

for(int check=0; check<accounts.length; check++)

做這檢查每一個帳戶,如果達到數組末尾停止。甚至有一種更簡單的方法。我建議查找「java foreach」。

你的NullPointerException的原因並不是檢查你是否到達陣列的末端。讓我們假設你只有一個非活動Student帳戶陣列,並且沒有別的,你的代碼將做到這一點:

  • check = 0;
  • accounts[0]一個Student,是它動靜嗎? - 是
    • 打印的東西
    • check = 1
  • 跳過else if
  • 跳過else
  • accounts[1]活躍?等待,沒有accounts[1] - >NullPointerException

我不想給你完整的代碼,因爲試錯是學習所以要儘量用這些提示修復它的一個好方法。如果遇到任何問題,經過一段時間的思考仍然無法解決,請回來。

+0

感謝您的幫助。我最終得到了完美的結果。我也使用了每一個,我發現更容易,基本上我只需要在else語句中增加檢查,當我想移動到下一個元素而不是打印一個被阻止的消息時。再次感謝您的幫助! – jibbajava 2012-03-26 22:24:07