我通过此代码
捕获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)
知道为什么字符串不会转换为double?提前谢谢
答案 0 :(得分:0)
因为循环一直运行到s
为空,然后然后你正在传递s
- 现在是null
,请记住 - {{1 }}
要解决此问题,在循环中解析Double#valueOf(String)
。
s