我尝试在代码中输入 1 5/8,但不断收到以下错误:
运行:
Exception in thread "main" java.lang.NumberFormatException: For input string: "1 5/8"
at sun.misc.FloatingDecimal.readJavaFormatString(FloatingDecimal.java:1241)
at java.lang.Double.parseDouble(Double.java:540)
at ClientCode.main(ClientCode.java:42)
Java Result: 1
BUILD SUCCESSFUL (total time: 17 seconds)
这是我的代码:
[code] public double findFrac(int whole, String frac) {
if (frac == null || frac.equals(""))
return whole;
String[] parts = frac.split("/");
return whole + Integer.parseInt(parts[0]) / (double)Integer.parseInt(parts[0]);
最佳答案
Double.parseDouble
方法根本不理解分数。它不知道如何处理 1 5/8
;它需要类似 1.625
的内容。
要解析分数,您必须自己解析它,或者可能某个地方的某个库可能会执行此任务。
Double.valueOf
method ,它还解析 Strings
(它只是创建一个 Double
而不是 double
),它会详细指定允许的内容,并且不会抛出异常NumberFormatException
。
关于java - 在java中输入带分数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19233682/