0

このコードを使用して、Javaで外部.exeファイルの出力値をキャプチャしています

Process p = Runtime.getRuntime().exec("filepath\\myexefile.exe 5.53 46.46"); // 5.53 and 46.46 are two input orguments of exe file
BufferedReader stdInput = new BufferedReader(new 
InputStreamReader(p.getInputStream()));

String s;
while ((s = stdInput.readLine()) != null) {
    System.out.println(s);                         }
    Double d = Double.valueOf(s);
    System.out.println(d);
}

コードは正常に実行され、出力 53.4429 が期待どおりに表示されます。ただし、53.4429 を double に変換しようとすると、次のエラーが発生します。

Exception in thread "main" java.lang.NullPointerException
    at sun.misc.FloatingDecimal.readJavaFormatString(FloatingDecimal.java:1008)
    at java.lang.Double.valueOf(Double.java:504)

string が double に変換されない理由は何ですか? 前もって感謝します

4

1 に答える 1

0

ループsは null になるまで実行され、次に渡されますs(これは今では ですnull、覚えておいてください) Double#valueOf(String)

これを修正するには、ループ内で解析します。s

String s;
while ((s = stdInput.readLine()) != null) {
    System.out.println(s);
    Double d = Double.valueOf(s);
    System.out.println(d);
}
于 2013-01-22T06:31:15.863 に答える