java - 在java中输入带分数

标签 java joptionpane

我尝试在代码中输入 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/

相关文章:

java - 在 Tomcat 上 curl 部署版本化 war

java - 在 Swing 中为对话框设置初始焦点组件的正确方法是什么?

java - 在按 YES 退出 Java 程序之前确认

java - 使用反射启动 JavaFX 项目

java - 如何从嵌套的 Hashmap 中获取数据?

java - "duck an exception"是什么意思?

java - 使用 4 个选项制作 JOptionPane

java - 取消 JOptionPane.showMessageDialog 时的空指针异常

java - 循环和 JOptionpane

java - SonarLint 此处使用原始 boolean 表达式