Search code examples
javaexceptionruntimeexception

Why do I get java.lang.NumberFormatException: For input string: "∞"?


here's the scenario. I am dynamically generating the components to be displayed on the JPanel according to the data taken from the database. The user is prompted to enter an integer number and according to that some calculations are done. The output should be given as a decimal value. Therefore, i have assigned the answer to a double and formatted is using DecimalFormat.

I get an error when i pass my double value to the format() method of DecimalFormat eventhough i didn't enter any value as 0.

Here's the error

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)

The code snippet the error is generated,

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;

            }

Please consider that the variables gbc and textConstraints are GridBagConstraints objects, water is a double variable and waterdays and days are int variables.

What should have been the problem with my code?


Solution

  • A simple explanation:

    This error occurs when the denominator is ZERO in the division process.

    Put the condition(using if else) that your value of denominator should not be equal to zero.

    Or if you can't put the condition,

    Set up exception handling for the value of denominator is equal to zero, to avoid your application crash.

    Use

    try{//Your code }

    catch(Exception e){//catch exceptions }