# Java Scanner auf Zahlen/Numerische Zeichen überprüfen



## Shakal (20. Mrz 2012)

Moin moin Java-Forum Team

Ich hänge da an einem Problem. Ich möchte mit dem Scanner Zahlen eingeben und dann überprüfen ob es eine Zahl ist, wenn es eine Zahl ist soll er diese in eine ArrayList schreiben und Erneut Fragen ob man eine Zahl eingeben möchte und diese dann auch wieder in die gleiche ArrayList speichern. Wenn denn eine Nicht-Zahl eingeben wird soll er mit dem Restlichen Programm fortfahren 


```
public static void main(String[] args) {
		if(Zahl dann Wiederhole) <------
		System.out.print("Geben Sie eine natuerliche Zahl ein: ");
		Zahlen.add( scan.nextInt());
		System.out.println("test" + Zahlen);
	}
```

das Syso ist blos ein ausgabe Test ob er die Zahlen Speichert das tut er aber wie Frage ich am mit einer Schleife oder so ob es eine Zahl ist .

MfG Shakal
Ps Entschuldigt meine Rechtschreibfehler ich versuch mich zu bessern.


----------



## Final_Striker (20. Mrz 2012)

```
if
```
 ein eine Bedingung wenn -> dann. Wenn du etwas wiederholen willst, dann musst du Schleifen benutzen. In deinem Fall wäre eine while-Schleife am besten geeignet.


----------



## bygones (20. Mrz 2012)

du kannst die entsprechende exception abfangen, die nextInt wirft, wenn es keine Zahl ist [c]InputMismatchException[/c] und dann darauf reagieren wie du willst


----------



## truesoul (20. Mrz 2012)

Naja, gibt der User ein Buchstaben an, gibt es eine InputMismatchException.


```
Scanner sc = new Scanner(System.in);
int zahl = 0;
try{
	zahl = sc.nextInt();
}catch(InputMismatchException e){
	System.out.println("keine zahl");
}

System.out.println(zahl);
```

Mfg


----------



## Shakal (20. Mrz 2012)

Das mit dem Fehler abfangen brauch mit auch danke schonmal aber ich habt nicht ganz verstanden ich möchte das er Die Zahl in das Array Speichert und dann weider abfragt ob man eine zahl eingeben möchte solange bis man eine nicht Zahl eingibt


----------



## Shakal (20. Mrz 2012)

Sorry für DoppelPost ich find den "bearbeiten Bottum" nicht

Das mit dem Fehler abfangen brauch mit auch danke schonmal aber ihr habt nicht ganz verstanden ich möchte das er Die Zahl in das Array Speichert und dann weider abfragt ob man eine zahl eingeben möchte solange bis man eine nicht Zahl eingibt


----------



## truesoul (20. Mrz 2012)

Und wo ist das Problem selber auf die Idee zu kommen ? 
Einfach eine Schleife mit Abbruchbedingung, und nach Eingabe einer Zahl den User fragen ob er noch eine Zahl eingeben möchte? Wenn nein, dann soll die Schleife beendet werden.


----------



## Shakal (20. Mrz 2012)

Na wie mach ich denn diese Schleife kann ich dieses InputMismatchException auch als 
	
	
	
	





```
if(!InputMismatchException)
```
 benutzen oder wie prüfe ich ob das eine Zahl war?


----------



## Shakal (20. Mrz 2012)

Okay Hab es mit einer While schleife hingerkriegt, 

Ich lasse den Threath noch offen falls ich noch weitere Probleme habe okay ^^


----------



## faetzminator (20. Mrz 2012)

```
boolean isExceptionPresent;
do {
    try {
        // ...
        isExceptionPresent = false;
    } catch (...) {
        // ...
        isExceptionPresent = true;
    }
while (isExceptionPresent);
```


----------



## HimBromBeere (20. Mrz 2012)

Das musst du nicht weiter prüfen, wenn die Exception auftaucht, wird automatisch in den hierfür verantworklichen catch-Block gesprungen, wo due die Fehlerbehandlung machst. Gab es keinen Fehler, wrd dieser Teil nie erreicht.


----------



## Shakal (20. Mrz 2012)

```
public static void main(String[] args) {
		boolean eingabe = true;
		do {
			try {
				System.out.print("Geben Sie eine natuerliche Zahl ein: ");
				Zahlen.add(scan.nextInt());
			} catch (InputMismatchException e) {
				System.out.println("keine zahl");
				System.out.println("test" + Zahlen);
				eingabe = false;
			}
		} while (eingabe);
	}
```

So hab ich das nun und es Funkltioniert Perfekt wei ich es wollte ^^


----------



## faetzminator (20. Mrz 2012)

Shakal, viel Spass, wenn ein Mal [c]eingabe[/c] auf [c]false[/c] gesetzt wurde  Abgesehen prüfst du im Schleifenkopf noch das falsche.


----------



## Shakal (20. Mrz 2012)

Es ist die erste Semester Arbeit in Programmieren 2 und da wird nicht verlangt das die Eingabe wiederholt werden soll.

Was überprüfe ich falsch ? Bitte kläre mich auf ?


----------



## faetzminator (20. Mrz 2012)

Ah, gerade den Fehler bemerkt, du gehst das etwas anders an als in meinem Kopf  So im Sinn von "lese alle Zahlen ein, bis ein ungültiger Input kommt". Mein Beispiel war bezogen auf "lese etwas ein, bis eine gültige Eingabe gemacht wird".


----------



## Crian (20. Mrz 2012)

```
Zahlen
```
 solltest du klein schreiben.


----------

