# eingabe beschränken ansonsten exception!!



## jusi (7. Jul 2009)

Hi alle zusammen!

Ich habe ein Methode in der ein Passwort eingegeben werden soll. Dieses soll aber nur max 6 Zeichen besitzen, ansonsten soll eine Exception geworfen werden.
Ich habe hier im Forum nach Eingabelänge gesucht aber irgendwie passt das  nicht zu meinem Problem.

```
private String password(){
		System.out.println("Geben Sie ihr Passwort ein: ");
		return sc.next();	
		
	}
private String name(){
		
		System.out.println("Geben Sie ihren Namen ein: ");
		return sc.next();
		
		}
```
In der Zweiten Methode soll ein Name eingegeben werde, sollten dafür Zahlen verwendet werden soll ebenso eine Exception geworfen werden!
Wie kann ich diese Sachen prüfen????

LG


----------



## Marco13 (7. Jul 2009)

```
private String password(){
        System.out.println("Geben Sie ihr Passwort ein: ");
        String s = sc.next();   
        if (s.length() > 6) throw new WasWeißIchWasFürEineException("Fehler...");
        return s;
    }
```

Beim zweiten müßte man wissen, ob sowas wie "jusi42" erlaubt wäre...


----------



## Gastredner (7. Jul 2009)

Für die Abfrage auf Zahlen in der Eingabe könntest du die matches()-Methode von String verwenden:

```
if(s.matches("regEx")) { throw new ABCException("Keine Zahlen!"); }
```
Allerdings weiß ich nicht, wie die Regex genau aussehen müsste. Vielleicht einfach "[0-9]+"?


----------



## kuku (8. Jul 2009)

z.B. :


```
if(!s.matches("\\p{L}*")) { throw new .. }
```


----------



## jusi (8. Jul 2009)

Vielen vielen Dank, ihr habt mir sehr geholfen!
Klappt alles super!
Aber alleine wäre ich irgendwie nicht drauf gekommen!

:toll::toll::toll:


----------



## jusi (10. Jul 2009)

Hi ich hab nochma eine Frage und zwar  habe ich eine Exception eingebaut um Zahlen über 4 abzufangen aber  die  Exception kommt jetzt auch bei gültigen eingaben


```
System.out.println("Was wollen sie nun tun?\n[1] Benutzer anzeigen\n[2] Benutzer erstellen\n[3] Benutzer löschen\n[4] mehrere Benutzer anzeigen lassen");
			int choice = Integer.parseInt(sc.next());

			if (choice > 4) {

			}
			try {
				throw new InvalidNumberException();
			} catch (InvalidNumberException e1) {

				e1.printStackTrace();
			}
             catch(NumberFormatException n){
            	 n.printStackTrace();
            	 System.out.println("Das war keine Zahl");
             }
```

Aber warum??


----------



## eRaaaa (10. Jul 2009)

du wirfst die exception außerhalb deiner abfrage 


```
if (choice > 4) {
throw new Exception();  
}
```


----------



## jusi (11. Jul 2009)

Also erst if-Anweisung, dann
die abfrage mit System.out.println...
und dann throw ??


----------

