# Eingabe so lange wiederholen bis gültiger Wert eingegeben.



## hanswurst (15. Mai 2007)

```
import java.util.regex.*;
import javax.swing.*;

class lagerverwaltung {

  public static void main(String[] args)
  {
  do {
    String as = JOptionPane.showInputDialog("(1) für Ersattzteil eingeben (2) für Ausgabe aller Ersatzteile (3) für Gesamtwert des Lagerbestands?");
  } while (as.matches("[^0123]"));
  
  }
}
```

wieso sagt er mir hier immer 

```
lagerverwaltung.java:10: cannot resolve symbol
symbol  : variable as 
location: class lagerverwaltung
  } while (as.matches("[^0123]"));
           ^
1 error
```

?

Will dass die Eingabeaufforderung so lange kommt bis man einen vernünftigen Wert eingegeben hat. (0 soll das programm beenden.)
Wie kann ich das am einfachsten verwirklichen?

 :cry:


----------



## Jango (15. Mai 2007)

Setze alles in eine _while_-Schleife und lasse mit _if_ auf 0 testen.


----------



## Kein Benutzername (15. Mai 2007)

In Java können wie in C++ lokale Variablen definiert werden. 

Die Klammern {} grenzen immer einen Bereich ab. Darin definierte Variablen sind lokal. 

Aus diesem Grund ist as nicht ausserhalb der Klammern definiert. 

Daher einfach wie folgt vorgehen: 

import java.util.regex.*; 
import javax.swing.*; 

class lagerverwaltung { 

  public static void main(String[] args) 
  { 
   String as = new String();
  do { 
    as = JOptionPane.showInputDialog("(1) für Ersattzteil eingeben (2) für Ausgabe aller Ersatzteile (3) für Gesamtwert des Lagerbestands?"); 
  } while (as.matches("[0123]")); 

  } 
}



Viel Spass noch!

der.grosse.meister


----------



## Jango (15. Mai 2007)

Kein Benutzername hat gesagt.:
			
		

> String as = new String();



 :shock: 
Das hab ich so ja noch nie gesehen - wer hat dir denn das beigebracht...


----------



## hanswurst (15. Mai 2007)

Kein Benutzername hat gesagt.:
			
		

> In Java können wie in C++ lokale Variablen definiert werden.
> 
> Die Klammern {} grenzen immer einen Bereich ab. Darin definierte Variablen sind lokal.
> 
> ...



Oh mist da hät ich ja eigentlich von selbst drauf kommen können,
Anfänger halt.
Vielen dank


----------



## mein Benutzername (16. Mai 2007)

String as = new String();

@Jango:

es ginge auch 
String as = "";

in diesem Fall sogar: 
String as = null; 
oder
String as; 

aber wir wollen hier doch mal schönen Code zeigen und den Konstruktor benutzen. Gibt ja auch für andere Objekte und dann braucht man new......


----------



## neuer Benutzername (16. Mai 2007)

Setze alles in eine while-Schleife und lasse mit if auf 0 testen.



@Jango:

-->  auch in der while-Schleife ist es notwendig, as vorher zu definieren.


----------



## Jango (16. Mai 2007)

neuer Benutzername hat gesagt.:
			
		

> @Jango:
> 
> -->  auch in der while-Schleife ist es notwendig, as vorher zu definieren.



Hab ich das irgendwo angezweifelt?



			
				ich hat gesagt.:
			
		

> Setze alles in eine while-Schleife...



...war auch eher als Denkanstoß gemeint, und nicht als fertige Lösung.  :roll:


----------

