【问题标题】:Exception in thread “main” java.lang.NumberFormatException: For input string线程“主”java.lang.NumberFormatException 中的异常:对于输入字符串
【发布时间】:2017-02-09 10:52:28
【问题描述】:

我正在为我的代码使用 Netbeans IDE。当我尝试运行它时出现此错误:"

Exception in thread "main" java.lang.NumberFormatException: For input string: "8589.416,5468.2407,4263.4077,4064.9358,1997.893,5282.325,2169.72,2773.4211,7526.386,4607.6763,2598.06,1522.6462,1300.5988,1181.63,Tumor"
    at sun.misc.FloatingDecimal.readJavaFormatString(FloatingDecimal.java:1250)
    at java.lang.Double.parseDouble(Double.java:540)
    at Preprocessing.Newsvm_scale.run(Newsvm_scale.java.java:150)
    at Preprocessing.Newsvm_scale.main(Newsvm_scale.java.java:332)

我记住,这里的其他类似问题对我没有帮助,因为我有不同的代码。我的代码如下。如果有人能指出我正确的方向,我将非常感激。谢谢。

【问题讨论】:

  • 调试你的代码,到第540行看看Double.parseDouble的参数。这是一个巨大的字符串,而不是一个数字。这无法解析为Double
  • 我也不认为8589.416,5468.2407,4263.4077,4064.9358,1997.893,5282.325,2169.72,2773.4211,7526.386,4607.6763,2598.06,1522.6462,1300.5988,1181.63,Tumor 是一个数字。
  • 您是否阅读了错误信息?它包含您尝试解析的实际字符串,并且它显然不是有效的十进制数。
  • 请参阅How to Ask。更重要的是,提供minimal reproducible example。这里有很多代码..

标签: java numberformatexception


【解决方案1】:

StringTokenizer 方法已将一个长字符串设置为值 st,它没有被分解。所以当双 正在调用 Parse 方法。它抛出一个数字格式异常,因为它试图将该字符串转换为双精度。您需要在调用 StringTokenizer 方法时指定逗号分隔数字。 如果您需要更多帮助,请随时询问。

【讨论】:

  • ...或者您可以添加到您的答案中。
  • 非常感谢@jordanH。是的,我使用的文件是逗号分隔的。但我不明白你是什么意思(你需要指定逗号分隔数字)。你能解释更多吗?谢谢
  • 当您实例化 StringTokenizer 对象时,您应该指定用于分隔标记的字符。在这种情况下,标记用逗号分隔。这是一个示例:stackoverflow.com/questions/9446704/… StringTokenizer str = new StringTokenizer(stringName, ",");其中逗号表示分隔符。
  • 我试着按照你的建议去做@JordanH (StringTokenizer st = new StringTokenizer(line," ,");) 。但仍然面临同样的错误
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-10-12
  • 2021-09-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多