2017-11-01 2 views
0

Wie kann ich eine JOption erhalten, um eine Fehlermeldung anzuzeigen, wenn der Benutzer Informationen eingibt, die kein int oder double sind, oder wenn sie nichts eingeben und OK drücken? Ich hatte eine while-Schleife ausprobiert, aber die Fehlermeldung wurde immer wieder angezeigt, und der aktuelle Code, den ich dafür ohne Schleifen habe, bedeutet, dass wenn der Benutzer tatsächlich eine richtige Zahl in das Feld eingibt, das JOption-Fehlerfeld trotzdem angezeigt wird , aber dann, wenn aufgefordert, einen Wert erneut einzugeben, bringt mich zum nächsten Schritt. Wie kann ich 1. diese erste Anzeige stoppen und 2. sie tatsächlich anzeigen lassen, wenn sie einen Nullwert eingeben, und 3. welche Art von Code kann ich für eine Nichtnummer eingeben?Java: Wie kann ich einen JOption-Fehler anzeigen, wenn ein Nicht-Int oder Doppel eingegeben wird?

Ich dachte, dass ich es richtig gemacht hatte mit dem String-Eintrag, wie darunter zu sehen, aber manchmal bekomme ich eine Konsolenfehlermeldung damit. Irgendwelche Ideen, um das auch zu reparieren?

die int/double JOption:

JOptionPane.showMessageDialog(null, "Invalid entry!", "Error!", 
JOptionPane.ERROR_MESSAGE); 
    balance = Double.parseDouble(JOptionPane.showInputDialog(null, "Enter 
initial balance:", "Enter balance", JOptionPane.INFORMATION_MESSAGE)); 

für die Saite:

// if the dialog box is empty 
    if (name.isEmpty()) { 
     do { 
      // display an error message 
      JOptionPane.showMessageDialog(null, "Name cannot be empty", "ERROR", JOptionPane.ERROR_MESSAGE); 
      name = JOptionPane.showInputDialog(null, "Enter customer name:", "Customers Name", // shows input box again 
        JOptionPane.INFORMATION_MESSAGE); 
     } while (name.isEmpty()); // will loop until not empty 
    } 

Fehler:

Exception in thread "main" java.lang.NullPointerException at CustomerInfo.main(CustomerInfo.java:19)

Linie 19 ist dies:

 } while (name.isEmpty()); // will loop until not empty) 

Antwort

0

Sie könnten eine Methode erstellen, die prüfen würde, ob die Nummer double war (und auch für int funktioniert), und dann überprüfen Sie im selben Aufruf nur, ob der eingegebene Wert nicht null ist.

public static void main(String[] args) { 
     test("2.22"); 
     test("2"); 
     test(""); 
    } 

    public static void test(String s) { 
     if (checkIfNumber(s) && (s != null || !s.isEmpty())) { 
      System.out.println("number is entered"); 
     } else { 
      System.out.println("number was not entered"); 
     } 
    } 

    private static boolean checkIfNumber(String s) { 
     try { 
      Double.parseDouble(s); 
     } catch (NumberFormatException ex) { 
      //provide a pop up here if required 
      JOptionPane.showMessageDialog(null, "You did not enter a valid number or the input was empty"); 
      return false; 
     } 
     return true; 
    } 
0

versuchen, dies für Doppel

double balance=0; 
    do { 
     try { 
     balance = Double.parseDouble(JOptionPane.showInputDialog(null, "Enter initial balance:", "Enter balance", JOptionPane.INFORMATION_MESSAGE)); 
     JOptionPane.showMessageDialog(null, balance); 
    } catch (Exception e) { 
     JOptionPane.showMessageDialog(null, "Invalid entry, \nPlease enter balance in double format"); 
    } 
    } while (balance==0); 

und diese für Streich

String csName = ""; 
    do { 
     try { 
      csName = JOptionPane.showInputDialog(null, "Enter Customer Name:", "Enter Customer Name", JOptionPane.INFORMATION_MESSAGE); 
      if (csName.equals("")) { 
       JOptionPane.showMessageDialog(null, "Please enter customer name"); 
      } else { 
       JOptionPane.showMessageDialog(null, csName); 
      } 
     } catch (Exception e) { 
      JOptionPane.showMessageDialog(null, "invalid entry, \nplease enter customer name in string format"); 
     } 
    } while (csName.equals("")); 
Verwandte Themen