java - 当我尝试运行这个程序时,是什么导致了我的 java.lang.NullPointerException 错误?

标签 java arrays

<分区>

我的代码是这样的:

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) 是什么原因造成的?

当研究它说这个错误是当你试图在一个空集上操作但是 WordGroup 不是空的,因为它有一个在 Main 中定义的字符串。

最佳答案

因为每个对象的默认值(参见 default value section)都是 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();
}

关于java - 当我尝试运行这个程序时,是什么导致了我的 java.lang.NullPointerException 错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19893652/

相关文章:

java - Spring:使用 @Value 注释时,Bean 无法从外部属性文件读取值

java - 想要访问选择查询的单元格的值

C# 向类型 T 的类数组添加扩展 Append 方法

Java 更改数组数据未显示在输出中

ruby 为哈希数组设置哈希键

java - 使用 RestTemplate 作为 Rest API 时出现 400 错误代码

java - 并发:Condition.awaitNanos() 不释放锁

java - Selenium 驱动程序选择错误

arrays - Swift 序列前缀(而 :) return not all elements

ios - 在 alamofire 响应后追加到现有数组