我的代码是这样的:
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);
}
}
}
Run Code Online (Sandbox Code Playgroud)
Wordgroup类:
public class WordGroup {
public String words;
public WordGroup (String getWords){
words = words.toLowerCase();
}
public String[] getWordArray(){
return words.split(" ");
}
}
Run Code Online (Sandbox Code Playgroud)
它编译得很好,但是当我尝试运行它时,我得到错误java.lang.NullPointerException并突出显示" words = words.toLowerCase();"(我正在使用blueJ)是什么导致了这个?
在研究它时,这个错误是当你尝试操作一个空集时,但是WordGroup它不是null,因为它有一个在Main中定义的字符串.
Ale*_* C. 11
因为每个对象的默认值(参见默认值部分)是null.由于您没有初始化words,因此会抛出NPE.
public WordGroup (String getWords){
words = words.toLowerCase(); <- here words is null so a NPE is thrown
}
Run Code Online (Sandbox Code Playgroud)
但我认为你没有正确设置你的构造函数; 它应该是 :
public WordGroup (String getWords){
words = getWords.toLowerCase();
}
Run Code Online (Sandbox Code Playgroud)