Java. Wie machen Sie eine Fehlermeldung, wenn userInput ist ein string statt int?
Arbeite ich an einer Art test in Java, in dem der Benutzer eine Frage wie diese: "4 + ? = 12". Die zahlen sind randomisierte und so ist die questionsmark.
Muss ich eine Fehlermeldung, wenn die Eingabe des Benutzers ist nicht eine int. Zum Beispiel, wenn der Benutzer tippt das Wort "acht" statt "8" eine Fehlermeldung wird angezeigt. Wie kann ich dies tun?
- Haben Sie gelesen, Ausnahmebehandlung?
- Sie könnten versuchen, konvertieren Sie die Zeichenfolge der Antwort auf eine ganze Zahl und fangen Sie die exception aus, wenn die Konvertierung fehlschlägt (mit einem try ... catch-block
- Wir können nicht alles tun, aber denke, ohne sehr viel mehr Daten. Machen Sie eine GUI? Machen Sie ein command-line Programm?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Betrachten Sie den folgenden code, der sowohl dafür sorgt, dass ein integer vorgesehen ist, und fordert den Benutzer auf, geben Sie die richtige Art von input. Sie könnten erweitern die Klasse mit anderen Einschränkungen (min - /max-Werte, etc.)
TestInput Klasse
Interagieren Klasse
Zunächst, Sie brauchen, um die Zeichenfolge, die der Benutzer eingetippt hat, für die '?' in der Frage. Wenn Sie tun es einfach mit
System.in
undSystem.out
Sie würde es so machen:Wenn Sie dachten, eine einfache version mit GUI, die Sie nutzen könnten
JOptionPane
wie diese:Anderes, wenn Sie eine echte GUI, könnten Sie Lesen die Eingabe des Benutzers aus einer
JTextField
oder ähnliches:(In diesem Fall können Sie auch ein
JFormattedTextField
- Filter, die die Eingabe eines Integer. Dadurch wird die überprüfung, ob die Eingabe ein Integer ist oder nicht überflüssig.)Nun müssen Sie analysiert die Zeichenfolge in eine
int
:Den Inhalt der
catch
-block unterscheidet sich von der Variante, die Sie nahm vor. Wenn Sie nahm eine der erstenSystem.in
undSystem.out
könnten Sie etwas schreiben wie dieses:Wenn Sie nahm die version mit
JOptionPane
könnten Sie etwas schreiben wie dieses:Anderen, werden Sie brauchen, um eine
JLabel
für, die Hexe hat zunächst keinen Inhalt. Nun, stellen Sie Sie für 3 Sekunden gedrückt, um die text:Beachten Sie, dass die Letzte version ist auch kompatibel mit die zweite.
Nun, sollten Sie entweder erzeugen Sie eine neue Frage, oder wiederholen Sie den read/parse-Vorgang, bis die vom Benutzer eingegebenen Ganzzahl.
JSpinner
oder Dinge wie, dass