1

NullPointerExceptionメソッドを呼び出して文字列を渡す行を取得しています。文字列がnullであるとしか想定できません。

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

nullness チェック自体がNullPointerException. !data.equals(null)書く代わりにdata != null

于 2013-01-30T20:30:14.157 に答える
6

行番号がわからないので、次のことが原因であると思われます。

!data.equals(null)

の場合、 adataがスローされます。nullNullPointerException

それを次のように置き換えます。

data != null
于 2013-01-30T20:30:30.983 に答える
2

推測する必要がある場合、バグは次の場所にあると思います。

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

次のように変更してみてください。

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

null オブジェクトからメソッドを呼び出すことはできません。

于 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 に答える