java.lang.NumberFormatException: cadena vacía

El código siguiente sigue dando una 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) 

Debe verificar su campo antes de analizar el doble:

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

La cadena que intentas analizar como doble está vacía. Debe comprobar si el método getText () devuelve una cadena que no está vacía antes de intentar realizar el análisis porque no puede analizar el doble de una cadena vacía.