【问题标题】:Conversion of String into double get error将字符串转换为双重获取错误
【发布时间】:2013-01-05 08:15:39
【问题描述】:

我正在通过这段代码在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)

知道为什么字符串不转换成双精度吗?在此先感谢

【问题讨论】:

  • @CodeEnhusiastic 这在这里真的没有帮助。 OP 向我们展示了失败的代码,以及由此产生的堆栈跟踪。
  • 我的意思是他试图找出异常。

标签: string double converter


【解决方案1】:

因为循环一直运行到s 为空,并且然后您将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);
}

【讨论】:

    猜你喜欢
    • 2010-12-14
    • 2016-07-29
    • 1970-01-01
    • 2017-10-06
    • 2014-01-06
    • 1970-01-01
    • 2015-08-06
    • 1970-01-01
    相关资源
    最近更新 更多