# Int Eingabe: String mit Exception abfangen. Aber wie?



## ahimvx (29. Jan 2015)

Hallo,

bei meinem Programm soll es nur möglich sein die Zahlen 1, 2 und 3 eingeben zu können.
Leider bekomme ich es nicht hin, dass wenn man einen Text eingibt, dass dadurch die gewünschte Exception in der Konsole ausgegeben wird mit einer kleinen Benachrichtigung.
Ich habe was von parseInt gelesen, dass habe ich aber nicht verstanden.
Und ich habe mit "while" versucht, dass bei einer falschen Eingabe weiter etwas in die Konsole eintippen kann bis man eine richtige Zahl eingibt. Das hat aber nicht funktioniert.


```
import java.util.Scanner;

public class IOConsole {

	public static void main(String[] args) {
		try {
			menu();
		} catch (IllegalArgumentException ex) {
			System.out.println("Geben Sie eine Zahl zwischen 1 und 3 ein.");
		}
	}

	public static void menu() throws IllegalArgumentException {
		System.out.println("Berechnung des Flächeninhalts und des Umfangs.");
		System.out.println("Eingabe 1: Kreis");
		System.out.println("Eingabe 2: Rechteck");
		System.out.println("Eingabe 3: Rechtwinkliges Dreieck");
		Scanner scanner = new Scanner(System.in);
		System.out.print("Eingabe: ");
		int input = scanner.nextInt();
		if (input != 1 && input != 2 && input != 3) {
			throw new IllegalArgumentException();
		}
		switch (input) {
		case 1:
			System.out.println("Kreis");
			break;
		case 2:
			System.out.println("Rechteck");
			break;
		case 3:
			System.out.println("Rechtwinkliges Dreieck");
			break;
		default:
			System.out.println("Ungültige Eingabe!");
		}

	}
```


----------



## SignIn (29. Jan 2015)

Also ich bin kein Experte und hab Scanner noch nie verwendet:

aber laut Java - Doc schmeist scanner.nextInt(); Exceptions, die man abfangen müsste.
Also
	
	
	
	





```
try {
int input = scanner.nextInt();
if (input == 1) ....
}catch (InputMismatchException ex) {
throw ....;
}catch (NoSuchElementException ex) {
throw ...;
}
catch (IllegalStateException ex) {
throw ...;
}
```


----------



## Joose (29. Jan 2015)

ahimvx hat gesagt.:


> Und ich habe mit "while" versucht, dass bei einer falschen Eingabe weiter etwas in die Konsole eintippen kann bis man eine richtige Zahl eingibt. Das hat aber nicht funktioniert.



"Das hat nicht funktioniert" ist auch keine konkrete Fehlerbeschreibung.
Eigentlich musstest du die while Schleife nur solange laufen lassen bis eine valide Eingabe zustanden gekommen ist. Falsche Eingabe sollten innerhalb der while-Schleife mit try/catch abgefangen werden.


----------



## coco07 (30. Jan 2015)

Moin,

schau dir mal bitte die Klasse "IllegalArgumentException" an. Man kann dort dem Konstruktor einen String übergeben.
Von einer Schleife sehe ich im Code nichts 

grüße Coco07!


----------

