Exception Handling mit falschen Benutzereingaben Java
Ich brauche Hilfe Mit Exception-handling mit Falschen Benutzereingaben. Erstelle ich ein text-basiertes Spiel, begrüßt den Nutzer und geht dann zum Hauptmenü. Dann sagen Sie dem Benutzer die Optionen, und suchen Sie dann für Benutzereingaben. Aus irgendeinem Grund, immer wenn ich Eingang 1 "oder" 2, heißt Es: "Ihre Eingabe ist ungültig, bitte versuchen Sie es erneut" Und geht zurück auf die Entscheidungen. Ich weiß nicht genau, wo ich bin, was falsch läuft, hoffentlich kann mir jemand helfen. Auch, es wird nicht fangen die Diskrepanz Ausnahme. Hoffe, Sie können Helfen! Danke, Shandan
public static void main(String[] args) {
System.out.println("Welcome to Spec Ops!");
System.out.println("Please state your name:");
Scanner name = new Scanner(System.in);
String Name = name.next();
System.out.println("Hello "+Name);
mainMenu();
}
public static void mainMenu() {
System.out.println("1. Story Mode");
System.out.println("2. Infinant Combat");
Scanner input = new Scanner(System.in);
Object Selection = input.nextInt();
boolean validOption = true;
Integer x;
try {
x = (Integer)Selection;
} catch(ClassCastException cce){
System.out.println("Your input is invalid, please try again");
validOption = false;
} catch(InputMismatchException ime){
System.out.println("Your input is invalid, please try again");
validOption = false;
}
if(validOption) {
System.out.println("Hello!");
}
else {
mainMenu();
}
}
}
Irgendein besonderer Grund, warum Sie nicht tun: -
int selection = input.nextInt();
?
InformationsquelleAutor Shandan Spencer | 2012-12-20
Du musst angemeldet sein, um einen Kommentar abzugeben.
Scanner.nextInt gibt ant-int, so gibt es keine Notwendigkeit zu gehen
Object selection = scanner.nextInt()
, und dann warf einen int-Wert, Sie können lediglichint selection = scanner.nextInt()
- und-surround, die in einem try-catch-chatchesjava.util.InputMismatchException
, das ist die Ausnahme, die ausgelöst wird, wenn der Benutzer einen Buchstaben und keine ZahlInformationsquelleAutor w4etwetewtwet
Können Sie vorübergehend ändern Sie den code und verwenden Sie die Pokemon exception handling und überprüfen Sie die Stapelüberwachung, um zu sehen, welche Art von Ausnahme Sie implementieren sollten:
Sobald Sie wissen, die genauen Ausnahme stellen einige Haltepunkte und überarbeiten Sie Ihren code entsprechend.
Außerdem müssen Sie nicht haben, um die Ablaufsteuerung des Programms, indem Sie Ihre boolean variable in der catch-Blöcke:
InformationsquelleAutor theMarceloR
Beim Lesen der Namen, die Sie verwenden scanner.next(). Dies nicht, Lesen Sie in der Ende-Zeile-Zeichen, also, wenn Sie rufen-scanner.nextInt() liest die neue Linie und nicht zu analysieren als ein int.
Sollten Sie den Namen ändern, Lesen scanner.nextLine - () und wenn Sie behandeln möchten ungültige int Eingaben von dem Benutzer, der Aufruf von nextInt muss im try-block und fangen die InputMismatchException statt die classcastexception-Fehler.
InformationsquelleAutor Michael Krussel