2016-04-13 23 views
0

Mein Programm funktioniert mit Geburtstag und Alter. Ich habe Probleme mit dem Versuch, meine JTextField-Zeichenfolgen in Doppel zu konvertieren. Ich habe die Parse-Methode verwendet, aber immer noch einen Fehler erhalten. Bitte Hilfe!Wie konvertiere ich eine JTextField-Zeichenfolge in ein Double?

public class MyPaymentFrame extends JFrame implements ActionListener { 

    JTextField txtAge; 
    JTextField txtDate; 

     public MyPaymentFrame() { 
     Container mycnt = getContentPane(); 
     mycnt.setLayout(new FlowLayout()); 

     Color c = new Color(56, 100, 20); 
     Font F = new Font("Arial", Font.ITALIC, 20); 

     mycnt.add(new JLabel("Enter your Age")); 
     txtAge = new JTextField(15); 
     mycnt.add(txtAmount); 


     mycnt.add(new JLabel("Enter birthdate")); 
     txtDate = new JTextField(10); 
     mycnt.add(txtDate); 

    } 
     if (e.getActionCommand().equals("Clear")) { 
      txtAge.setText(""); 
      txtDate.setText(""); 
     } 

     if (e.getActionCommand().equals("Calculate")) { 
      // Converting String to Double 
      double Amount = Double.parseDouble(txtMonth); 

     } 

    } 
    public static void main(String[] args) { 

     Theframe myframe = new Theframe(); 

    } 

} 
+0

Welchen Fehler bekommst du? – robotlos

+0

Haben Sie versucht, 'txtMonth' zu drucken, um Fehler zu beheben? es sollte der erste Schritt sein .... – Maljam

+0

Der Code wird nicht kompiliert. – null

Antwort

0

Scheinbar ist TxtMonth ein JTexfield, aber die Double.parseDouble-Methode empfängt einen String. Überprüfen Sie die Javadoc here der Methode.

Versuchen Sie es mit:

double Amount = Double.parseDouble(txtMonth.getText()); 

Auch dieses Verfahren wird eine Number werfen, wenn der Text nicht zu verdoppeln, umgewandelt werden kann.

0

Sie könnten versuchen:

Double Amount = Double.valueOf(txtMonth); 

Nach der Dokumentation:

Diese Methode gibt ein Objekt Double den doppelten Wert durch das Argument vertreten halten String.

0
double Amount = Double.parseDouble(txtMonth.getText()); 

oder

Double Amount = Double.valueOf(txtMonth.getText()); 

parseDouble() gibt einen primitiven double Wert. valueOf() gibt eine Instanz der Wrapper-Klasse Double zurück.

Bevor Java 5 Autoboxing einführte, war das ein sehr signifikanter Unterschied zwischen diesen beiden.

0

Sie müssen den Text des Objekts txtMonth durch Aufruf der Methode getText und Bitte bestätigen Sie die Eingabe bekommen oder ein Try catch verwenden fällt die Eingabe nicht gültig ist ...

Beispiel:

public static void main(String[] args) { 
    double amount=0.0; 
    try { 
     amount = Double.parseDouble(txtMonth.getText()); 
    } catch (Exception e) { 
     System.err.println("ups, this was not castable to double"); 
      amount=-10.0; 
    } 
    System.out.println("Here is the double: "+ amount); 
} 
Verwandte Themen