java nextInt() try catch wiederholen Ausgang mehr als einmal
Ich Schreibe ein Programm, das akzeptiert zwei int-Werte in das Programm nextInt();
und haben es eingepackt in ein try catch
block zu stoppen schlecht Eingänge wie Doppel-oder-chars.
Wenn mehrere falsche Eingaben eingegeben werden die loop-Wiederholungen, die gleiche Anzahl von Zeiten. Ich nehme an, dies ist, weil meine scan.next()
hat eine Schleife um oft genug zu fangen die bösen Eingänge w/o-Fehler. Gibt es eine Möglichkeit zu wissen, diese Zahl auf dem ersten Durchlauf durch eine Schleife zu erstellen als Nächstes ausgeführt, dass viele Male?
In der Ausgabe der
if(cont == 'N') System.out.print("\nPlease re-enter\n\t:");
- Ausgabe und spiegeln die Höhe der Zeit, die eine nicht übereinstimmende Eingang geschrieben wurde. Das ist, wenn ich input 3 3.3 es wird wiederholt, ein weiteres mal, wenn der Eingang s 3.3 2.5 es wird wiederholen Sie drei weitere Male.
Ich versucht, indem Sie eine Schleife um scan.next()
auf default zu zehn mal, wurde aber über Bord und ich hatte zur Eingabe eines zusätzlichen 8-Zeichen, bevor es zu Lesen begann wieder. Vielleicht ist eine while-Schleife, aber was würden seine Bedingung sein, versuchte ich while(scan.next() != null){}
aber, dass die Bedingung nie aufgehört.
//input error checking
char cont = 'Y';
do{
if(cont == 'N')
System.out.print("\nPlease re-enter\n\t:");
cont = 'Y';
/* to stop the accidential typing of things other
* than integers from being accepted
*/
try{
n1 = scan.nextInt();
n2 = scan.nextInt();
}catch(Exception e){
cont = 'N'; //bad input repeat loop
scan.next();//stops infinite loop by requesting Scanner try again
}
} while(cont == 'N');//do loop while told N for continue
- können Sie uns ein Beispiel geben von falschen Eingaben, die Sie verwendet?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Nicht wissen, was Sie wollen, Ihren code zu tun. Von dem Lesen, was du gepostet hast, ich nehme an, Sie möchten, dass der Benutzer zur Eingabe 2 int-Werte und, wenn er/Sie nicht Sie wollen, veranlasst ihn/Sie zu re-geben Sie etwas, bis er/Sie Eingänge 2 ints.
Wenn dies der Fall ist, ich möchte nur hinzufügen,
scan = new Scanner(br.readLine());
nach dieser if-Anweisung:
if(cont == 'N')
{System.out.print("\nPlease re-enter\n\t:");}
Diese lösen Ihre looping-Problem
Erster Versuch :
ändern Sie die Zeile in der die exception fangen von
zu
Können Sie versuchen, folgende Aktionen in Ihrer catch-block:
machen es eine Methode, und tun Sie es mit dieser Methode.
sth wie diese: