我在一行调用方法并在其中传递一个字符串NullPointerException
。我只能假设字符串为空。
之前几行从BufferedReader
读取线初始化。这是相关的代码:
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)
答案 0 :(得分:8)
您的空值检查本身会触发NullPointerException
。而不是!data.equals(null)
写data != null
。
答案 1 :(得分:6)
在不知道行号的情况下,我怀疑以下是罪魁祸首:
!data.equals(null)
如果data
为null
,则会抛出NullPointerException
。
将其替换为:
data != null
答案 2 :(得分:2)
如果我不得不猜测,我认为错误在于:
while (!data.equals(null)) {
process(data);
尝试将其更改为:
while (data != null) {
process(data);
}
您无法从null对象调用方法。
答案 3 :(得分:1)
while (!data.equals(null))
毫无意义。如果data
为null
,则无法在其上调用equals(..)
。
替换
while (!data.equals(null))
通过
while (data!=null)