Java try catch, wie zurück auf Try?

... komplette Frage anzeigen

4 Antworten

Verschieb das try-catch in das Innere der Schleife. 
Mach daraus eine kopfgesteuerte Schleife.

Antwort bewerten Vielen Dank für Deine Bewertung
Kommentar von Sheyn
14.04.2016, 11:49

Dann kann ich aber keine Eingabe mehr machen 

0

wow, so viele Antworten, so viele Möglichkeiten, da beteilige ich mich auch mal.

Wie andere auch, wäre es gut das ganze in einer Kopfgesteuerten Schleife zu machen:

Solange die Antwort dem Initialwert entspricht wird die schleife wiederholt. 

Die Antwort wird erst gesetzt (und somit die schleife verlassen) sobald ein erlaubter Wert eingegeben wurde. Wurde ein Fehler Verursacht durch eine nicht-integer-Eingabe behandelt das der Catch-Block.

int antwort = 0;
int[] erlaubteWerte = {1, 2};

while (antwort == 0) {
try { System.out.println("Bitte zahl auswählen"); int input = new Scanner(System.in).nextInt(); if (IntStream.of(erlaubteWerte).anyMatch(x -> x == input)) { antwort= input; } } catch (Exception e) { System.out.println("Es ist ein Fehler aufgetreten"); } } System.out.println("Zahl ausgewählt: " + antwort); }
Antwort bewerten Vielen Dank für Deine Bewertung

Du verwendest den Try Block ja nur weil du eine fehlgeschlagene Umwandlung von einem Wort in eine Zahl vermeiden willst. Dann verwende doch den Block nur da und nicht für die Komplette Eingabe.

antwort = 3;

while(antwort > 2){
System.out.println("Nur 1 oder 2!");
System.out.println("Ja = 1\\nNein = 2");
try{
antwort = scan.nextInt();
}
catch(Exception e) {
System.out.println("Es ist ein Fehler aufgetreten");
}}
Antwort bewerten Vielen Dank für Deine Bewertung
Kommentar von Reyha24
14.04.2016, 10:26

Und was ist mit negativen Zahlen? ;)

0

wenn du eine funktion machst

public int wert(){
int input = sanner.nextint();
if(input == 1 || input == 2){
return input;
}
system.out.println("fehler")
return wert();
}

die rufst du dann mit wert() auf und bekommst immer 1 oder 2 zurück

Antwort bewerten Vielen Dank für Deine Bewertung
Kommentar von ceevee
14.04.2016, 10:48

Kann es sein, dass du try/catch nicht wirklich verstanden hast und es deswegen nicht nutzt? Wenn du einen Buchstaben eingibst, dann schmeißt scanner.nextInt() eine Exception.

0

Was möchtest Du wissen?