2013-11-22 5 views
0

전달 된 인수의 새 문자열 복사본을 만들려면 내 메서드를 호출 할 때 null 포인터 예외가 발생합니다. 이 메서드는 내 메인에서 호출됩니다.Null 포인터 예외 메서드

왜이 오류가 발생하고, null을 가리키는하지 그래서 내가 어떻게 해결합니까? front.data = original.charAt(i);

과 내가이 줄 back.next = newNode;

홈페이지 (방법의 관련 부분)에 오류가 있습니다 -1로 크기를 변경하는 경우 :

그것은 오류가이 선에 무슨 일이 일어나고 말한다

public class TestLString { 
    /** Main method */ 
    public static void main(String[] args) { 

     String str1 = "Hello, my name is Alphose!"; 
     LString lstr1 = new LString(str1); 

편집 : 이것은 작동하는 것처럼 보입니다!

내 초기화 된 데이터 입력란 (죄송합니다). 내가 다른 것을 추가 할 수 있으면 알려줘. 당신은 확실히 작동하지 않습니다

if (front == null) { front.data = ...; } 

public class LString{ 


    private Node front = null; //first val in list 
    private Node back; //last val in list 
    private int size = 0; 
    private int i; 
    private int offset; 

    public LString(){ 
     //construct empty list 
     Node LString = new Node(); 
     front = null; 

    } 
+1

'앞'과 '크기'는 어디에서 오는가요? 나는 우리가 전체 그림을 가지고 있지 않다는 느낌을 가지고있다. –

+1

코드와 설명에서 가장 논리적 인 설명은'front'이 null이라는 것이다. 그러나 @KevinBowersox가 지적했듯이,'front'가 초기화되는 곳을 볼 수 없습니다. –

+0

스택 추적을 제공하십시오. 훨씬 더 빨리 디버깅 할 수 있습니다. –

답변

2

. front이 null 인 경우 data 멤버에 값을 할당 할 수 없습니다.

2

편집

대체 이론 : 그 대신 같은데요

front = new Node(); 
front.data = original.charAt(i); 
front.next = back; 
size++; 

원래 이론 : 당신은 당신이 그것을 사용하기 전에 앞을 초기화 할 필요가

가 null의 경우, 당신은 데이터 (front.data = ...)에 액세스 할 수 없기 때문에210
if(front == null){ 

당신은

if(front != null){ 

을 의미한다.