Wie verwende ich Scanner, um nur gültige int als Eingabe zu akzeptieren?
Ich versuche, mich ein kleines Programm stabiler und ich brauche etwas Hilfe mit diesem.
Scanner kb = new Scanner(System.in);
int num1;
int num2 = 0;
System.out.print("Enter number 1: ");
num1 = kb.nextInt();
while(num2<num1)
{
System.out.print("Enter number 2: ");
num2 = kb.nextInt();
}
- Zahl 2 größer als Zahl 1
- Will auch ich das Programm, um automatisch zu überprüfen und zu ignorieren, wenn der Benutzer ein Zeichen statt einer Zahl. Denn gerade jetzt, wenn ein Benutzer zum Beispiel
r
statt einer Nummer das Programm einfach beendet.
InformationsquelleAutor der Frage John | 2010-05-26
Du musst angemeldet sein, um einen Kommentar abzugeben.
Verwenden
Scanner.hasNextInt()
:Hier ist ein Ausschnitt zur Veranschaulichung:
Sie nicht haben, um
parseInt
oder sich sorgen über dieNumberFormatException
. Beachten Sie, dass seit derhasNextXXX
Methoden nicht Voraus Vergangenheit jede Eingabe, die Sie haben können, zu nennennext()
wenn Sie möchten, überspringen den "Müll", wie oben gezeigt.Fragen
InformationsquelleAutor der Antwort polygenelubricants
String
und danntry
ingInteger.parseInt()
und wenn Sie nichtcatch
eine Ausnahme, dann ist es eine Zahl, wenn Sie das tun, Lesen Sie in einem neuen, vielleicht durch eine Einstellung num2 zu Integer.MIN_VALUE und verwenden die gleiche Art von Logik in deinem Beispiel.InformationsquelleAutor der Antwort Ledhund
Sollte dies funktionieren:
InformationsquelleAutor der Antwort aioobe
Versuchen Sie dies:
Könnten Sie versuchen, zu analysieren, den string in ein
int
als gut, aber in der Regel Menschen, die versuchen zu vermeiden, das auslösen von Ausnahmen.Was ich getan habe ist, ich habe einen regulären Ausdruck, der definiert, eine Zahl, die
\d
bedeutet eine Ziffer. Die+
Zeichen bedeutet, dass es eine oder mehrere Ziffern. Die extra\
vor der\d
ist, weil in java, die\
ist ein besonderer Charakter, daher muss es escaped werden.InformationsquelleAutor der Antwort npinti
Ich sehen, dass Charakter.isDigit passt perfekt die Notwendigkeit, da der Eingang nur ein symbol.
Natürlich haben wir keine Informationen über diese kb-Objekt, aber nur in einem Fall ist es java.util.Scanner-Instanz, würde ich auch empfehlen die Verwendung von java.io.InputStreamReader für Kommandozeilen-Eingabe. Hier ist ein Beispiel:
InformationsquelleAutor der Antwort Ilya Saunkin
Was Sie tun könnten, ist auch das nächste token als String, wandelt diesen string zu einem char-array und testen,jedes Zeichen in das array ist eine Ziffer.
Ich denke das ist korrekt, wenn Sie nicht wollen, befassen sich mit den Ausnahmen.
InformationsquelleAutor der Antwort LB40