2017-05-14 7 views
0

Hallo kann mir jemand mit meinem Java-Programm helfen? Ich mache gerade einen Währungsumrechner und ich muss eine Option machen, wo der Benutzer einen britischen Pfund Betrag eingeben und klicken Sie auf konvertieren, um es zu konvertieren, dann haben Sie die Möglichkeit, ihren eigenen Wechselkurs in die Berechnung eingeben und wenn Convert geklickt wird Dann wird der vom Benutzer eingegebene Wechselkurs anstelle des von mir festgelegten verwendet. Hier ist der Code, den ich bisher habe, um GBP in USD umzurechnen, das Programm funktioniert, wenn ich einen Betrag eingib und auch einen Wechselkurs selbst eingib, jedoch die Option, den Eingabekurs zu verlassen, und den konstanten Wechselkurs zu benutzen, bringt ein Fehler beim umgewandelt:Java Netbeans IDE, Konvertierung gibt mir einen Fehler

public class cConverter extends javax.swing.JFrame { 




double GBPtoUSD = 1.288;   
//this is the constant exchange rate for GBP to USD. 



private void BtnConvertActionPerformed(java.awt.event.ActionEvent evt) {  



double ConvertFromGBP = Double.parseDouble(InputFrom.getText()); 
double GetExchange = Double.parseDouble(ExchangeRateFrom.getText()); 

/* Input from is where the user inputs the GBP amount they want converted. 
ExchangeRateFrom is the optional exchange rate box where the user inputs an 
updated exchange rate if the constant one is out of date. */ 




if (CurrencyTop.getSelectedItem().equals("USD")){ 
     String cGBPtoUSD = String.format("%.2f", ConvertFromGBP * GBPtoUSD); 
     ConvertedFrom.setText(cGBPtoUSD); 
    } 
    else if (CurrencyTop.getSelectedItem().equals("USD")) { 
     String uGBPtoUSD = String.format("%.2f", GetExchange * ConvertFromGBP); 
     ConvertedFrom.setText(uGBPtoUSD); 
    } 

/* CurrencyTop is a combo box containing the currencies to convert to. 
ConvertedFrom is the calculation output label. */ 

Fehler-Ausnahme, wenn ohne Eingabe eines Wechselkurses Umwandeln (sollte die GBPtoUSD Doppel verwendet werden, wenn nichts zu dieser Box eingegeben wird):

Exception in thread "AWT-Eventqueue-0" java.lang.NumberFormatException: leer String

Antwort

0

Ihre Ausnahme passiert wahrscheinlich hier:

double GetExchange = Double.parseDouble(ExchangeRateFrom.getText()); 

Sie sollten für leere Eingabe prüfen (auch auf der InputFrom.getText()):

String input = ExchangeRateFrom.getText(); 
if(null == input || input.isEmpty()) { 
    GetExchange = GBPtoUSD; 
} 
else { 
    try { 
     GetExchange = Double.parseDouble(input); 
    } 
    catch(Exception ex) { 
     // use default or do something else on invalid input 
     GetExchange = GBPtoUSD; 
    } 
} 

und dann GetExchange verwenden für die Umwandlung in einem einzigen if-Block zu tun:

if (CurrencyTop.getSelectedItem().equals("USD")){ 
    String uGBPtoUSD = String.format("%.2f", GetExchange * ConvertFromGBP); 
    ConvertedFrom.setText(uGBPtoUSD); 
} 
+0

Vielen Dank für die Antwort xormar, ich habe den Code implementiert, den Sie mir gegeben haben, aber ich bekomme immer noch den gleichen Fehler. –

+0

Haben Sie in InputFrom.getText() auch nach leeren Eingaben gesucht? Was passiert in ExchangeRateFrom? Kannst du den kompletten StackTrace und den aktualisierten Code zu deinem Beitrag hinzufügen? Vielleicht passiert der Fehler woanders? – xormar

+0

https://gist.github.com/liamrice18/2aae2ec72bdfa34ea308519d131c47b8 –