java - 为什么我会收到 java.lang.NumberFormatException : For input string: "∞"?

标签 java exception runtimeexception

这是场景。 我根据从数据库获取的数据动态生成要在 JPanel 上显示的组件。 系统会提示用户输入一个整数,并根据该整数完成一些计算。输出应以十进制值形式给出。因此,我已将答案指定为 double 值,并使用 DecimalFormat 进行格式化。

当我将 double 值传递给 DecimalFormat 的 format() 方法时,即使我没有输入任何值 0,我也会收到错误。

这是错误

java.lang.NumberFormatException: For input string: "∞" at sun.misc.FloatingDecimal.readJavaFormatString(FloatingDecimal.java:2043) at sun.misc.FloatingDecimal.parseDouble(FloatingDecimal.java:110) at java.lang.Double.parseDouble(Double.java:538) at java.lang.Double.valueOf(Double.java:502) at com.boarding.brdrsbllsys.view.Bills.displayOutput(Bills.java:358) at com.boarding.brdrsbllsys.view.Bills.btnConfirmActionPerformed(Bills.java:186) at com.boarding.brdrsbllsys.view.Bills.access$200(Bills.java:27) at com.boarding.brdrsbllsys.view.Bills$3.actionPerformed(Bills.java:123) at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:2022) at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2348) at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:402) at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:259) at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:252) at java.awt.Component.processMouseEvent(Component.java:6533) at javax.swing.JComponent.processMouseEvent(JComponent.java:3324) at java.awt.Component.processEvent(Component.java:6298) at java.awt.Container.processEvent(Container.java:2236) at java.awt.Component.dispatchEventImpl(Component.java:4889) at java.awt.Container.dispatchEventImpl(Container.java:2294) at java.awt.Component.dispatchEvent(Component.java:4711) at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4888) at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4525) at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4466) at java.awt.Container.dispatchEventImpl(Container.java:2280) at java.awt.Window.dispatchEventImpl(Window.java:2746) at java.awt.Component.dispatchEvent(Component.java:4711) at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:758) at java.awt.EventQueue.access$500(EventQueue.java:97) at java.awt.EventQueue$3.run(EventQueue.java:709) at java.awt.EventQueue$3.run(EventQueue.java:703) at java.security.AccessController.doPrivileged(Native Method) at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:80) at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:90) at java.awt.EventQueue$4.run(EventQueue.java:731) at java.awt.EventQueue$4.run(EventQueue.java:729) at java.security.AccessController.doPrivileged(Native Method) at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:80) at java.awt.EventQueue.dispatchEvent(EventQueue.java:728) at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:201) at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:116) at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:105) at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101) at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:93) at java.awt.EventDispatchThread.run(EventDispatchThread.java:82)

生成错误的代码片段,

if (gbc.gridx == 1 && gbc.gridy == i + 1) {
                textConstraints.gridx = 1;
                textConstraints.gridy = i + 1;
                newPanel.add(new JLabel(((JTextField) component).getText()), textConstraints);
                int days = Integer.parseInt(((JTextField) component).getText().trim());
                System.out.println("add num of days");

                DecimalFormat df = new DecimalFormat("#.##");

                textConstraints.gridx = 3;
                double a=water / waterdays * days*1.0;
                double boarderWater = Double.valueOf(df.format(a));//error is given in this line
                newPanel.add(new JLabel(boarderWater + ""), textConstraints);
                continue;

            }

请考虑变量 gbctextConstraints 是 GridBagConstraints 对象,water 是 double 变量,waterdaysdays 是 int 变量。

我的代码应该有什么问题?

最佳答案

简单解释:

除法过程中分母为零时会出现此错误。

输入条件(使用 if else),即分母的值不应等于零。

或者如果你不能提出条件,

设置分母值为零的异常处理,以避免应用程序崩溃。

使用

尝试{//你的代码 }

catch(Exception e){//捕获异常 }

关于java - 为什么我会收到 java.lang.NumberFormatException : For input string: "∞"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51481738/

相关文章:

java - 迭代器中的 .next 引发的并发修改异常

linux - 如何在Linux中的Elasticsearch中解决此错误

c++ - 为什么 ideone.com 这样做?

java - IE 中的 GWT 性能问题

java - 使用经典排列的加密

c++ - 我可以在 MPI 并行代码中抛出异常吗?

java - 带有已检查异常的调用方法

Java EE 开源项目值得借鉴?

java - 我的 fragment 不会显示在我的 Activity 中

java - Android coverflow : Error inflating class pl. poliea.coverflow.CoverFlow