-2

単純に文字列を返すように作成した getString() メソッドを使用して別のクラスから文字列にアクセスしようとすると、NullPointerException が発生します。これを使用しようとする場所と、例外が発生する場所は次のとおりです。

public void storeChar(String str)
{
    wordSeed wrdSd = new wordSeed();
    seed = wrdSd.getSeed();

    for(int i = 0; i < str.length(); i++)
    {
        if(str.contains(seed))
        {
            int temp = str.indexOf(seed, i);
            singleChar.add(str.charAt(temp));
        }
    }
}

wrdSd.getSeed() から文字列を取得してシードに格納していますが、それは明らかに、必要なものではなくシードに null を入れているだけです。次に、 str.contains(seed) を使用しようとすると、例外がスローされます。

よろしくお願いします。

4

3 に答える 3

1

wordSeed クラスをチェックして、初期値が null かどうかを確認してください。そのクラスのインスタンスを作成する場合 (真新しい、「wordSeed wrdSd = new wordSeed();」を参照)、.getSeed() を使用すると、ハードコーディングされた値を取得する必要があります。

これを修正するいくつかの方法は、設定した wordSeed の同じインスタンスを使用するか、静的変数を使用することです。

于 2013-03-27T20:33:52.607 に答える
1

を呼び出す前にgetSeed()、必ず初期化してください。オブジェクトを作成するときwrdSdseedフィールドが初期化されるように、コンストラクターでこれを行うことができます。

于 2013-03-27T20:36:09.943 に答える
0
public class  WordSeed  
{
    private String seed;
    public WordSeed()  
    {
    }   

    public String getSeed()  
    {
          return this.seed;
    }
}  

現在の実装では、次の 2 つのオプションのいずれかを追加する必要があると思います。

private String seed = "";

また

public WordSeed(String seed)  
{   
        if(null==seed)  
        {  
            this.seed="";
        } else
        { 
           this.seed=seed;  
         }
}  
于 2013-03-27T20:36:02.910 に答える