1

NullPointerException在一条线上调用一个方法并将其传递给一个字符串。我只能假设字符串为空。

BufferedReader它是在几行之前从 readline 初始化的。以下是相关代码:

FileInputStream tmp = null;
try {
    tmp = new FileInputStream(file);
} catch (FileNotFoundException e) {
    System.err.println("File not found!");
    e.printStackTrace();
    System.exit(1);
}
DataInputStream dis = new DataInputStream(tmp);
BufferedReader br = new BufferedReader(new InputStreamReader(dis));

create();

try {
    data = br.readLine();
} catch (IOException e) {
    System.err.println("First readline failed: " + e);
    System.exit(1);
}
while (!data.equals(null)) {
    process(data);
    ...

和错误:

Exception in thread "main" java.lang.NullPointerException
       at enc.read(enc.java:40)
       at enc.main(enc.java:15)
4

4 回答 4

8

您的空值检查本身会触发NullPointerException. 而不是!data.equals(null)data != null

于 2013-01-30T20:30:14.157 回答
6

在不知道行号的情况下,我怀疑以下是罪魁祸首:

!data.equals(null)

如果datanull,则 aNullPointerException将被抛出。

将其替换为:

data != null
于 2013-01-30T20:30:30.983 回答
2

如果我不得不猜测,我认为错误在于:

while (!data.equals(null)) {
   process(data);

尝试将其更改为:

while (data != null) {
    process(data);
}

您不能从空对象调用方法。

于 2013-01-30T20:31:45.397 回答
1

while (!data.equals(null))没有意义。如果datanull你不能调用equals(..)它。

代替

while (!data.equals(null))

经过

while (data!=null)
于 2013-01-30T20:32:30.340 回答