Versuchen Sie zu fangen und Benutzereingaben
Dies ist eine Frage für eine Hausaufgabe mit einem try/catch-block. Für einen try/catch-ich weiß, dass Sie den code, den Sie testen möchten, in den try-block und dann den code, den Sie wollen, zu passieren, in Reaktion auf eine Ausnahme im catch-block aber wie kann ich es in diesem speziellen Fall?
Den der Benutzer eingibt, eine Zahl, die gespeichert ist in userIn aber wenn er in einem Brief oder irgendetwas anderes als eine Zahl, die ich will, es zu fangen. Die eingegebene Zahl wird in einer switch-Anweisung nach dem try - /catch.
Scanner in = new Scanner(System.in);
try{
int userIn = in.nextInt();
}
catch (InputMismatchException a){
System.out.print("Problem");
}
switch(userIn){...
Wenn ich versuche zu kompilieren, gibt es das symbol nicht gefunden, für die Nummer der Zeile entspricht dem Anfang der switch-Anweisung switch(userIn){. Ein paar Recherchen später finde ich, dass die userIn nicht gesehen werden kann, die außerhalb des try-block und das verursacht den Fehler. Wie kann ich die test-userIn für die richtige Eingabe sowie die switch-Anweisung siehe-userIn, die nach der try/catch?
- Das problem ist, dass "int " userIn" ist definiert in den scope von Ihrer "try {}". Es ist nicht sichtbar außerhalb dieses Bereichs. LÖSUNG: verschieben Sie einfach "int-userIn" BEVOR Ihr "versuchen".
Du musst angemeldet sein, um einen Kommentar abzugeben.
Etwas wie:
Indem er so etwas wie
-1
als Standard-Wert (es kann alles sein, dass Sie nicht mehr erhalten als Eingang in den normalen ausführen, können Sie überprüfen, ob Sie eine Ausnahme ist oder nicht. Falls alle int-Werte gültig sind, dann verwenden Sie eine Boolesche Markierung, die Sie in den try-catch-Blöcken.Den
int userIn
ist innerhalb dertry-catch
Umfang, und Sie können verwenden Sie es nur innerhalb des Bereichs nicht außerhalb.Müssen Sie deklarieren Sie Sie außerhalb der
try-catch
Klammern:Probieren Sie etwas wie dieses
Diese verursachen, und der Ausnahme, wenn der Benutzer etwas eingegeben als Zahl, denn es wird versuchen, analysieren die Benutzereingaben
String
als ZahluserIn
nicht gefunden wird,parseInt
wirft eine andere Ausnahme, so sind Sie gar nicht zu fangen einen Fehler in der Eingabe.userIn
nicht gesehen werden kann, die außerhalb des try-Blocks. Wie auch immer, ich denke, deine Lösung ist falsch,in.next()
gibt eine ganze Zahl, undInteger.parseInt()
muss ein string sein.