我遇到了NullPointerException,经过研究后我不知道为什么。 错误消息显示为:
java.lang.NullPointerException
at TextDecoder.readMessagesFromFile(TextDecoder.java:32)
at TextDecoder.main(TextDecoder.java:54)
我已在第54和32行旁评论。
这是我的构造函数(所有这些方法都来自同一类):
public TextDecoder() {
messages = new TextMessage[10];
msgCount = 0;
}
我的Main方法如下(我包括类声明):
public class TextDecoder {
public static void main(String[] args) throws Exception {
if (args.length != 1) {
System.out.println("There is an incorrect amount of command-line arguments. Command-line Argument length: " + args.length);
System.exit(1);
}
File msgFile = new File(args[0]);
if (msgFile == null) {
System.out.println("File not found.");
System.exit(1);
}
readMessagesFromFile(msgFile); // Line 32
}
}
我的readMessagesFromFile是以下内容:
public static void readMessagesFromFile(File inputMsgFile) throws Exception {
Scanner input = new Scanner(inputMsgFile);
while (input.hasNextLine()) {
/* Some code here */
// Recipient and keyPresses are defined in here and are not null
}
messages[msgCount] = new TextMessage(recipient, keyPresses); // Line 54
msgCount++;
}
input.close();
答案 0 :(得分:3)
public TextDecoder() {
messages = new TextMessage[10];
msgCount = 0;
}
这是一个构造函数,由new TextDecoder()
调用。
您不会调用它,因此messages
不会被初始化。 (但是无论如何,您都不应该在构造函数中设置静态字段。)
将readMessagesFromFile
方法设置为实例方法(删除static
;并创建要在其上调用该方法的TextDecoder
实例);或静态初始化状态。