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?
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 }