4

私のコードはこれです:

public class Main{

    public static void main(String[] args){
        WordGroup wordgroupOne= new WordGroup ("You can discover more about a person in an hour of play than in a year of conversation");
        WordGroup wordgroupTwo= new WordGroup ( "When you play play hard when you work dont play at all");

        String[] quoteOne = wordgroupOne.getWordArray();   
        String[] quoteTwo = wordgroupTwo.getWordArray();

        for (String word : quoteOne){
            System.out.println(word);
        }

        for (String word : quoteTwo){                       
            System.out.println(word);
        }
    }
}

語群クラス:

public class WordGroup {
    public String words;

    public WordGroup (String getWords){
        words = words.toLowerCase();
    }

    public String[] getWordArray(){
        return words.split(" ");   
    }
}

正常にコンパイルされますが、実行しようとするとエラーが発生java.lang.NullPointerExceptionし、「」が強調表示されますwords = words.toLowerCase();(私は blueJ を使用しています) 何が原因ですか?

調査すると、このエラーはnullセットを操作しようとしたときに発生するがWordGroup、メインで定義された文字列があるためnullではないと言われています。

4

1 に答える 1

11

すべてのオブジェクトのデフォルト値 (デフォルト値セクションnullを参照) は です。を初期化していないためwords、NPE がスローされます。

public WordGroup (String getWords){
   words = words.toLowerCase(); <- here words is null so a NPE is thrown
}

しかし、コンストラクターを正しく設定していないと思います。そのはず :

public WordGroup (String getWords){
   words = getWords.toLowerCase();
}
于 2013-11-10T18:52:22.437 に答える