2016-11-27 3 views
-2

그래서 내가 어디 LinkedList 클래스와 나는 그것을 양식 응용 프로그램에 구현 해야하는 프로그램을 만들고있어. 유일하게 어려운 부분은 ToString 메서드가 제대로 작동하는 것입니다.ToString 메서드가 항상 NullReferenceException을 반환하는 이유는 무엇입니까?

public override string ToString() 
    { 
     ListNode temp = head; 
     string modifier = ""; 
     for (int i = 0; i <= count -1; i++) 
     { 
      modifier += count + ") " + temp.getValue() + "\r\n"; 
      temp = temp.getNext(); 
     } 
     return modifier; 
    } 

나는 머리가 null로 시작하기 때문에 목록이 비어 있지만 처음부터 잘 모르겠다. 어떤 도움을 주시면 감사하겠습니다. 다른 코드 줄을보고 싶다면 제공하는 것보다 더 행복 할 것입니다.

+4

당신은 당신이 head'가 null'생각 말할 때 당신이 질문에 대답하지 않았다? – NtFreX

+0

@ Dr.Fre 당신은 생각할 것입니다,하지만 아닙니다. 'head'가'null' 인 경우,'count' *는 0이어야합니다.이 경우'temp' ('head')는 결코 액세스되지 않습니다. – hvd

+1

* mouse *라고하는 매우 강력한 디버그 도구가 있습니다. 커서를 가리키면 null이 무엇인지 알 수 있습니다. – Plutonix

답변

0

count의 값이 잘못된 것 같습니다. 목록에있는 노드의 수와 일치하지 않습니다. 우리는 또한 count 테스트를 위해 실제로 정확한지 확인하기 위해 '카운트 검증'에 추가 할 수

public override string ToString() 
{ 
    ListNode temp = head; 
    string modifier = ""; 
    while(temp != null) 
    { 
     modifier += count + ") " + temp.getValue() + "\r\n"; 
     temp = temp.getNext(); 
    } 
    return modifier; 
} 

: - 그러나, 간단한 수정 while 루프를 사용하는 것입니다 그것은 조금 덜 장황하다는 장점이있다 목적 :

public int fullCount{ 
    get{ 
     int total=0; 
     ListNode temp = head; 

     while(temp != null) 
     { 
      total++; 
      temp = temp.getNext(); 
     } 

     return total; 
    } 
} 

과 함께 :

Debug.Assert(fullCount == count,"Count is wrong."); 
관련 문제