2012-02-16 2 views
2

の原因:ここではArrayList.add()メソッド実行時にクラスLONGINTEGERには、次のエラーの原因となっているとNullPointerException

Exception in thread "main" java.lang.NullPointerException 
at LongInteger.breakString(LongInteger.java:38) 
at LongInteger.<init>(LongInteger.java:17) 
at LongInteger.main(LongInteger.java:149) 

は、いくつかの関連クラスの抜粋は以下のとおりです。

public class LongInteger extends Object { 
private ArrayList<String> storedStrings;   


    // Constructor 
public LongInteger(String s) { 
    this.setInputString(s); 
    this.breakString(this.inputString);  //Exception @ line 17 
} 

/** 
    * the purpose of this method is to break the input string into an 
    * ArrayList<String> where each String has a length of 9 or less. 
    */ 
private void breakString(String s){   
    if(s.length()>9){ 
     storedStrings.add(0,s.substring(s.length()-9,s.length())); 
     this.breakString(s.substring(0,s.length()-9)); 
    } else { 
     this.storedStrings.add(0,s);  //Exception @ line 38 
    } 
} 


public static void main(String[] args) { 
    LongInteger a = new LongInteger("12345"); //Exception @ line 149 
    } 
} 

私はへと途方に暮れていますこのNullPointerExceptionの原因誰でも提案がありますか?

+0

"storedStrings"はこれまでに初期化されていますか? –

答えて

15

storedStringsをインスタンス化することはありません。変更してみてください:

private ArrayList<String> storedStrings; 

へ:

this.storedStrings.add(0,s); 

それはインスタンスthis.storedStringsに保存されているArrayList<String>に方法addを呼び出している:

private ArrayList<String> storedStrings = new ArrayList<String>(); 

あなたはラインを持っている場合。 new演算子は、物事の新しいインスタンスを取得する方法です。

3

使用する前にstoredStrings変数を作成する必要があります。

ArrayList<String> storedStrings = new ArrayList<String>(); 
+0

'storedStrings'が作成されましたが、初期化されていません。 –

関連する問題