2017-03-03 4 views
1

Dies ist der Code und wenn ich einen Buchstaben eingeben, würde es nicht die Zeile .matches statt ich habe einen Fehler, aber wenn ich die parseFloat rec1 entfernen und entfernen Sie die sonst wenn (rec1 < total) dann wird die .matches Linie anzeigen bitte helfen Sie mir, wie man das tut, danke im Vorausjava.lang.NumberFormatException Für Eingabe Zeichenfolge Wert ist Buchstaben

CashType c = neu CashType(); c.setVisible (wahr);

c.jButton1.addActionListener(new java.awt.event.ActionListener() { 

     public void actionPerformed(java.awt.event.ActionEvent evt) { 
     String receive = c.jTextField1.getText(); 


     float total = total("sellno"+SellNoCount.getText()); 
     float rec1 = Float.parseFloat(receive); //this is line 1525 

      if(!receive.matches("[0-9]+")){ 
       JOptionPane.showMessageDialog(null,"Enter a Valid Amount"); 
       c.jTextField1.setText(""); 

      } 

      else if(receive.equalsIgnoreCase("")){ 
       JOptionPane.showMessageDialog(null,"Enter Amount"); 
      } 
      else if(rec1 < total){ 

       JOptionPane.showMessageDialog(null,"Insufficient Amount"); 

      } 

// ERROR

Exception in thread "AWT-EventQueue-0" java.lang.NumberFormatException: For input string: "asdasd" 
at sun.misc.FloatingDecimal.readJavaFormatString(FloatingDecimal.java:2043) 
at sun.misc.FloatingDecimal.parseFloat(FloatingDecimal.java:122) 
at java.lang.Float.parseFloat(Float.java:451) 
at projectfinal.SellPage$32.actionPerformed(SellPage.java:1525) 
+0

Sie müssen prüfen, ob es übereinstimmt, bevor Sie das Parsen versuchen. – shmosel

+0

Und Sie müssen überprüfen, ob es leer ist, bevor Sie überprüfen, ob es übereinstimmt. – shmosel

+1

Überprüfen Sie diese Bedingung, bevor Sie den Wert 'if (! Receive.matches ("[0-9] +")) 'analysieren. –

Antwort

2

Von der Fehlermeldung, es aussieht wie Sie "asdasd" zu jTextField1 eingeben. Dieser Wert, den Sie analysieren möchten, um zu floaten. Float.parseFloat(string) wird eine NumberFormatException auslösen, wenn der String kein numerischer Wert ist. In der Methode parseFloat() wird der Zeichenfolgenparameter in einen primitiven Gleitkommawert konvertiert.

Sie können überprüfen, ob der eingegebene Wert numerisch ist oder nicht und dann parsen, um zu floaten.

float rec1 = 0; 

    if(isNumeric(receive)){ 
     rec1 = Float.parseFloat(receive); 
     if(rec1 < total){ 

     JOptionPane.showMessageDialog(null,"Insufficient Amount"); 

     } 
    }else { 
      JOptionPane.showMessageDialog(null,"Enter a Valid Amount"); 
      c.jTextField1.setText(""); 
     } 

Das Verfahren ist

public static boolean isNumeric(String s) { 
    return s.matches("[-+]?\\d*\\.?\\d+"); 
} 
+0

hey danke dir, es hat mir geholfen mein Problem zu lösen, aber es gibt ein kleines Problem nachdem es ausgeführt wird, wenn ich einen Buchstaben eingebe, der angezeigt wird Gib einen gültigen Betrag ein, nachdem du ok gedrückt hast, dann erscheint Ungenügender Betrag auch wie löst man das? Es tut mir leid für die Fragen, aber ich lerne immer noch über Java Danke nochmals im Voraus – JoMS

+0

Versuchen Sie den geänderten Code. es war, weil der if (rec1

+0

@jomsdakis aushielt, hoffe dieses mal funktionierte es für dich –

Verwandte Themen