P
phip1611
Gast
Moin.
Ich möchte eine Zahl über die Konsole mit java.util.Scanner einlesen. Damit solange Eingaben erfolgen, bis eine davon valide ist, läuft das ganze in einer Schleife. Wenn aber im 1. Schleifendurchlauf die Exception eintritt, wird in JEDEM weiteren Durchlauf automatisch der catch(){}-block ausgeführt und der try{}-block übersprungen. Wie kann ich das elegant umgehen? Es funktioniert, wenn ich in jedem Schleifendurchlauf ein neues Objekt anlege, aber das ist irgendwie unsauberer Stil, oder?
Ich möchte eine Zahl über die Konsole mit java.util.Scanner einlesen. Damit solange Eingaben erfolgen, bis eine davon valide ist, läuft das ganze in einer Schleife. Wenn aber im 1. Schleifendurchlauf die Exception eintritt, wird in JEDEM weiteren Durchlauf automatisch der catch(){}-block ausgeführt und der try{}-block übersprungen. Wie kann ich das elegant umgehen? Es funktioniert, wenn ich in jedem Schleifendurchlauf ein neues Objekt anlege, aber das ist irgendwie unsauberer Stil, oder?
Java:
public static long nextNaturalNumberAsLongInput() {
long l;
java.util.Scanner input;
input = new java.util.Scanner(System.in);
l=-1;//Schleife wird wiederholt, bis natürliche Zahl eingegeben wurde
do {
try {
l = input.nextLong();
} catch (InputMismatchException e) {
/* wenn im ersten schleifendurchlauf exception ausgelöst wird
wird in JEDEM weiteren Durchlauf automatisch der catch(){}-block genommen
und der try{}-block übersprungen
*/
System.out.println("Bitte eine natürliche Zahl eingeben!");
}
} while(l<0);
return l;
}