gpt4 book ai didi

java - 创建对象时出现空指针异常

转载 作者:行者123 更新时间:2023-12-01 06:43:49 25 4
gpt4 key购买 nike

我想知道是否有人可以帮助我解决这个空指针异常。我正在编写一个程序来查找英语单词的所有字谜。我创建了一个 EnglishDictionary 类,当给定英语单词的长度及其第一个字母时,它会扫描包含所有英语单词的文本文件,并选择将那些长度相同且包含第一个字母的单词添加到 ArrayList 中。代码如下:

import java.io.FileReader;
import java.io.BufferedReader;
import java.io.IOException;
import java.util.ArrayList;

public class EnglishDictionary {

public EnglishDictionary(String firstLetter, int wordLength) {
ArrayList<String> words = new ArrayList<String>();
processDict(firstLetter, wordLength);
}

public void processDict(String firstLetter, int wordLength) {
try {
FileReader fReader = new FileReader("englishWords.txt");
BufferedReader reader = new BufferedReader(fReader);
while (true) {
String line = reader.readLine();
if (line == null) {
break;
} else {
if (line.length() == wordLength) {
words.add(line);
}
}
}
} catch (IOException e) {
System.out.println("File does not exist.");
}
}

public ArrayList<String> getWords() {
return words;
}

public void printWords() {
for (String word : words) {
System.out.println(word);
}
}

private ArrayList<String> words;

}

正如你所看到的,我还没有添加检查第一个字母是否在所选英文单词中的功能。当我从另一个类创建 EnglishDictionary 对象时,出现空指针异常。它说:

Exception in thread "main" java.lang.NullPointerException
at EnglishDictionary.processDict(EnglishDictionary.java:23)
at EnglishDictionary.<init>(EnglishDictionary.java:10)
at Main.main(Main.java:6)

我似乎无法弄清楚这是从哪里来的。其他人能看到吗?提前致谢。

最佳答案

words 未正确初始化。您正在初始化一个LOCAL变量单词,它隐藏了CLASS变量单词。

在构造函数中执行此操作:

public EnglishDictionary(String firstLetter, int wordLength) {
//ArrayList<String> words = new ArrayList<String>(); // Creates a local variable called 'words'; class member does NOT get initialized.
words = new ArrayList<String>(); // THIS initializes the class variable.
processDict(firstLetter, wordLength);

}

关于java - 创建对象时出现空指针异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24020938/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com