14

The code below keeps giving a java.lang.NumberFormatException: empty String:

private void jButton4ActionPerformed(java.awt.event.ActionEvent evt) {
    double AText = Double.parseDouble(angleAField.getText());
    double BText = Double.parseDouble(angleBField.getText());
    double CText = Double.parseDouble(angleCField.getText());
    double aText = Double.parseDouble(sideaField.getText());
    double bText = Double.parseDouble(sidebField.getText());
    double cText = Double.parseDouble(sidecField.getText());

    if (getMissing(angleAField.getText()) == false && getMissing(angleCField.getText()) == false) { //doesnt have angle C ,find Angle A
        double angleA = Math.round(Math.asin((Math.sin(BText) / bText) * aText));
        angleAField.setText("" + angleA);
    }
}

public boolean getMissing(String Field) {
    try {
        if (Field.equals("")) {
            return false; // has number
        }
    } catch (NumberFormatException e) {}

    return true;
}

Error:

Exception in thread "AWT-EventQueue-0" java.lang.NumberFormatException: empty String
at sun.misc.FloatingDecimal.readJavaFormatString(FloatingDecimal.java:1011)
at java.lang.Double.parseDouble(Double.java:540)
at sowhatstrig.trigFrame.jButton4ActionPerformed(trigFrame.java:520)
at sowhatstrig.trigFrame.access$300(trigFrame.java:20)
at sowhatstrig.trigFrame$4.actionPerformed(trigFrame.java:353)
at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:2018)
at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2341)
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:6505)
at javax.swing.JComponent.processMouseEvent(JComponent.java:3321)
at java.awt.Component.processEvent(Component.java:6270)
at java.awt.Container.processEvent(Container.java:2229)
at java.awt.Component.dispatchEventImpl(Component.java:4861)
at java.awt.Container.dispatchEventImpl(Container.java:2287)
at java.awt.Component.dispatchEvent(Component.java:4687)
at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4832)
at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4492)
at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4422)
at java.awt.Container.dispatchEventImpl(Container.java:2273)
at java.awt.Window.dispatchEventImpl(Window.java:2719)
at java.awt.Component.dispatchEvent(Component.java:4687)
at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:723)
at java.awt.EventQueue.access$200(EventQueue.java:103)
at java.awt.EventQueue$3.run(EventQueue.java:682)
at java.awt.EventQueue$3.run(EventQueue.java:680)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:87)
at java.awt.EventQueue$4.run(EventQueue.java:696)
at java.awt.EventQueue$4.run(EventQueue.java:694)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:693)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:242)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:161)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:150)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:146)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:138)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:91)
4
  • 1
    I think the exception says it all. The string that you are passing to parseDouble on line 520 is empty Commented Feb 4, 2014 at 2:49
  • I think you need to check for an error while you're trying to parse it into a double; right now you're doing the error checking after you've tried assigning parsing a bunch of text into doubles. Commented Feb 4, 2014 at 2:49
  • What line is double AText = Double.parseDouble(angleAField.getText());? Commented Feb 4, 2014 at 2:50
  • check docs for Double.parseDouble.. docs.oracle.com/javase/7/docs/api/java/lang/… Commented Feb 4, 2014 at 2:55

2 Answers 2

23

You should check your field before parse double:

private void jButton4ActionPerformed(java.awt.event.ActionEvent evt) {
   double AText = ParseDouble(angleAField.getText());
   double BText = ParseDouble(angleBField.getText());
   double CText = ParseDouble(angleCField.getText());
   double aText = ParseDouble(sideaField.getText());
   double bText = ParseDouble(sidebField.getText());
   double cText = ParseDouble(sidecField.getText());

// other code here same
}

double ParseDouble(String strNumber) {
   if (strNumber != null && strNumber.length() > 0) {
       try {
          return Double.parseDouble(strNumber);
       } catch(Exception e) {
          return -1;   // or some value to mark this field is wrong. or make a function validates field first ...
       }
   }
   else return 0;
}
Sign up to request clarification or add additional context in comments.

Comments

4

The string you're trying to parse as double is empty. You need to check if the getText() method returns a non empty string before trying to do the parsing cause you can't parse to double an empty string.

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.