2016-04-02 18 views
0
Exception in thread "AWT-EventQueue-0" java.lang.NumberFormatException: empty String 
    at sun.misc.FloatingDecimal.readJavaFormatString(FloatingDecimal.java:1842) 
    at sun.misc.FloatingDecimal.parseDouble(FloatingDecimal.java:110) 
    at java.lang.Double.parseDouble(Double.java:538) 
    at hotelsystem.hotelframe.checkbox1MouseClicked(hotelframe.java:1698) 
    at hotelsystem.hotelframe.access$000(hotelframe.java:15) 
    at hotelsystem.hotelframe$1.mouseClicked(hotelframe.java:185) 
    at java.awt.AWTEventMulticaster.mouseClicked(AWTEventMulticaster.java:270) 
    at java.awt.Component.processMouseEvent(Component.java:6528) 
    at javax.swing.JComponent.processMouseEvent(JComponent.java:3321) 
    at java.awt.Component.processEvent(Component.java:6290) 
    at java.awt.Container.processEvent(Container.java:2234) 
    at java.awt.Component.dispatchEventImpl(Component.java:4881) 
    at java.awt.Container.dispatchEventImpl(Container.java:2292) 
    at java.awt.Component.dispatchEvent(Component.java:4703) 
    at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4898) 
    at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4542) 
    at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4462) 
    at java.awt.Container.dispatchEventImpl(Container.java:2278) 
    at java.awt.Window.dispatchEventImpl(Window.java:2739) 
    at java.awt.Component.dispatchEvent(Component.java:4703) 
    at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:746) 
    at java.awt.EventQueue.access$400(EventQueue.java:97) 
    at java.awt.EventQueue$3.run(EventQueue.java:697) 
    at java.awt.EventQueue$3.run(EventQueue.java:691) 
    at java.security.AccessController.doPrivileged(Native Method) 
    at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:75) 
    at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:86) 
    at java.awt.EventQueue$4.run(EventQueue.java:719) 
    at java.awt.EventQueue$4.run(EventQueue.java:717) 
    at java.security.AccessController.doPrivileged(Native Method) 
    at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:75) 
    at java.awt.EventQueue.dispatchEvent(EventQueue.java:716) 
    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) 

private void checkbox1MouseClicked(java.awt.event.MouseEvent evt) { 
    double cmeal = Double.parseDouble(mealout.getText()); 
    double cmealp = Double.parseDouble(price1.getText()); 
    double cmealq = Double.parseDouble(quantity1.getText()); 


    if (checkbox1.isSelected()) { 
     i[0] = ((cmealp * cmealq) + cmeal); 
     String pmeal = String.format("%.2f", i[0]); 
     mealout.setText(pmeal); 
    } 
} 
+1

'boş String' Bu bir zil çalmalıdır. –

cevap

0

istisna parseDouble yapmanız çalıştığınız anlamına gelir , boş bir dize veya çift olarak biçimlendirilemeyen bir dize iletilir [doc source]. getText() numarasına yapılan 3 çağrınızın boş olmayan bir dize döndürdüğünden emin olmalısınız. Bu yapılamazsa, özel durumla ilgilenmek için try..catch bloğunu kullanmak istersiniz.

0

Yanıtınızı yığın izinizde - boş dizginiz var. Bunu çözmek için, dizeninizin boş olup olmadığını ve biçimlendirmeyi denemediyseniz, yalnızca 0'a veya bu durumda ne yapmak istediğinize karar verebilirsiniz.

Ama aldığınız dize hakkında emin değilseniz daha iyi bir çözüm, bu dize null olmadığı durumlarda için, denemede ile sarın ve NumberFormatException yakalamak olacak, ama sadece sayı değil

0
double cmeal = Double.parseDouble(mealout.getText()); 
double cmealp= Double.parseDouble(price1.getText()); 
double cmealq= Double.parseDouble(quantity1.getText()); 

bunlar istisna alıyorsunuz üç satır vardır, bir dize bir boşluk ile başlayan bir rakam gibi görünüyor ama değil bir dize bir çift almaya çalışıyorsanız, bir eception alma şansı vardır. , önce 3 tet alanından elde ettiğiniz değerleri kontrol edin,