JamesNguyen
Aktiv Dabei seit: 08.11.2020 Mitteilungen: 115
Themenstart: 2020-11-21
Hallo Leute,
mein erste Frage im Info-Forum
ich kopier einfach mal meine code von der meiner Main-funktion in Intellij rein:
Es soll eine Zufallszahl vom User erraten werden
Funktionieren tut gerade noch nicht die Exception wenn ich bspw.
ein Wort eingebe
dann kommt
ununterbrochen als Ausgabe
Not a number - Try again!
Please enter your guess:
Not a number - Try again!
Please enter your guess:
Not a number - Try again!
...
Vielen Dank,
James Nguyen
Code:
public static void main(String[] args) {
Random random = new Random();
Scanner scanner = new Scanner(System.in);
System.out.println("Welcome!");
int zufallsGanzzahl;
int eingabeZahl;
do {
zufallsGanzzahl = random.nextInt(1000) + 1;
eingabeZahl = 0;
do {
System.out.println("Please enter your guess:");
DerEinfaeltige
Senior Dabei seit: 11.02.2015 Mitteilungen: 2606
Beitrag No.4, eingetragen 2020-11-21
Scanner.nextInt() liest nur passende Token.
Ist das nächste Token allerdings keine Ganzzahl, so passiert nichts und die nächste Schleife führt zum gleichen Fehler.
Mit nextLine() lässt du den Scanner die fehlerhafte Eingabe hingegen überspringen und gibst ihm die Möglichkeit, Fortschritt zu erzielen.
PS.: Es ist leichter, Programmcode zu lesen und überprüfen wenn man ihn in der Quelltextumgebung postet.
Java
publicstaticvoid main(String[] args){Random random = newRandom();Scanner scanner = newScanner(System.in);System.out.println("Welcome!");int zufallsGanzzahl;int eingabeZahl;do{
zufallsGanzzahl = random.nextInt(1000) + 1;
eingabeZahl = 0;do{System.out.println("Please enter your guess:");try{
eingabeZahl = scanner.nextInt();if(eingabeZahl > zufallsGanzzahl){System.out.println("Too big!");}elseif(eingabeZahl < zufallsGanzzahl){System.out.println("Too small!");}else{System.out.println("You win!");}}catch(InputMismatchException ime){System.out.println("Not a number - Try again!");}}while(eingabeZahl != zufallsGanzzahl);System.out.println("Play another round? [y/N]");}while((scanner.next()).equals("y"));}
----------------- Why waste time learning when ignorance is instantaneous?
- Bill Watterson -
tactac
Senior Dabei seit: 15.10.2014 Mitteilungen: 1941
Beitrag No.5, eingetragen 2020-11-21
Die Dokumentation enthält die gewünschte Information.
Die Methode nextInt überliest im Fehlerfall den anliegenden Input nicht. Man könnte also, falls das Lesen eines ints fehlschlägt, etwas anderes zu lesen versuchen. nextLine liest den Input bis hinter einen Zeilenumbruch.