2014-12-05 3 views
-1

"Account"라는 첫 번째 클래스는 배열에 추가되는 객체이고 "Account"클래스는 "printAccountDetails"라는 메소드가 있습니다. 계정의 세부 사항을 출력하십시오. 내가 사용하고있는 두 번째 클래스는 "AccountCollection"이라는 배열 클래스이며 배열에 추가 된 모든 계정 개체의 세부 정보를 출력하는 메서드를 만들려고했습니다.배열의 객체를 출력하는 방법 (Java)

public void printAllAccounts() 

{ 
    if (accounts.length > 0) 
    { 
     for (int index = 0 ; index < accounts.length ; index++) 
     { 
      accounts[currentIndex -1].printAccountDetails(); 
     } 
    } 

    else 

    { 
     System.out.println ("No entries"); 
    } 

"계정"배열의 이름이고, "currentIndex는"배열의 지점입니다 :

내가 지금까지 들어 왔 가장 가까운이 방법이다. 이것은 세부 사항을 출력하는 데는 효과가 있지만 계정 세부 정보를 많이 인쇄합니다. 그 이유는 아마 내가 계속해서 하나씩 증가하도록 말했기 때문일 것입니다.하지만 다른 방법을 생각할 수는 없습니다. 이 예와 같이 :

현재 인덱스가 비어있어 null 포인터 예외가 발생합니다. 어떤 도움을 주셔서 감사합니다!

+3

사용'index' 대신'의 currentIndex' :

그래서 대답은 (내 가정이 올바른지) 루프 조건의 배열의 길이를 사용하지만, 대신 currentIndex를 사용하지 않는 것입니다 루프 내의 카운터 변수입니다. 'currentIndex'는 어디에 정의 했습니까? –

+0

생성자에서 : public AccountCollection (int maxNoOfAccounts) { accounts = 새 계정 [maxNoOfAccounts]; currentIndex = 0; } 인덱스를 추가해도 null 포인터 예외가 발생합니다./계정을 인쇄 한 후에도! – Patterrz

답변

0

지적했듯이 currentIndex의 값이 절대로 변경되지 않으므로 루프 내부에 index을 사용해야합니다. 따라서 똑같은 것을 반복해서 볼 수 있습니다.

printAccountDetails() (여기서는 스택 추적이 도움이 됨)이 아닌 위의 코드에서 예외가 발생한다고 가정하면 배열의 요소 중 하나가 null이고 사용자가 printAccountDetails()을 호출하려고합니다. 그 위에.

나머지 코드를 보지 않고도 추측해야 할 것이지만 항목을 추가하면 currentIndex이 증가한다고 가정합니다.

그래서 당신은 하나 개의 항목을 추가 말, 당신은 currentIndex==1을 가지고 첫 번째 루프는 반복 항목 accounts[currentIndex -1] =>accounts[0]를 출력합니다 - 한 번 배열의 각 요소에 대해. accounts[1]null이기 때문에 두 번째 루프는 즉시 NullPointerException을 던집니다.

index으로 변경하면 indexcurrentIndex에 도달하면 예외가 발생합니다 (예 : 1). 이후,

for (int index = 0 ; index < currentIndex ; index++) 
    { 
     accounts[index].printAccountDetails(); 
    } 
관련 문제