# Integer Eingabe überprüfen



## absolut85 (14. Nov 2011)

Hallo nocheinmal, habe leider noch eine Frage. (Hab in der Suche nix gefunden)
Ich will hier die Eingabe kontrollieren, z.b. wenn er eine Ziffer statt einer Zahl eingibt, läuft das ganze einfach weiter, und beim char geht das relativ einfach mit einer While Schleife, aber wenn ich das auf integer ansetzte lande ich in einer endlosschleife 



```
static int readNumber(int ot)
	{
		int number;
		
		Out.println("Geben Sie "+ot+". Zahl ein ");
		number = In.readInt();
		
			return number;
		
		
	}
```


----------



## Gast2 (14. Nov 2011)

Wo ist da ne Schleife?


----------



## SlaterB (14. Nov 2011)

http://www.java-forum.org/hausaufgaben/126453-schleife-int-eingeben.html


----------



## absolut85 (14. Nov 2011)

Soviel zur Suche 

geht das nicht schöner, als er das gemacht hat?

also nur mit while? ohne dem if, und einer zusätzlichen Variable?


----------



## SlaterB (14. Nov 2011)

es gibt verschiedene Schleifen-Konstruktor, mal mit, mal ohne if,
das ist nicht weiter spannend, und meist vom konkreten Inhalt unabhängig,
alles ist ineinander umformbar,
in die niederen Systemsprache Assembler eh alles nur GOTOs


----------



## absolut85 (14. Nov 2011)

danke für deine antwort, ich habe es nun so gelöst, aber geht das echt nicht einfacher? wie etwa beim char?

 hier ist Char:


```
while (operator!= '+' && operator!= '-' && operator!= '*' && operator!= '/')
            {
                In.readLine();
                Out.print("Falsche Eingabe, bitte Operator eingeben [+|-|*|/|]:");
                operator = In.readChar();
            }
```



und hier ist das beim integer

```
static int readNumber(int ot)
    {
        int number=0;
        boolean done=false;
        do
        {
            Out.println("Geben Sie "+ot+". Zahl ein ");
            number = In.readInt();
            if (In.done())
            {
                 done = true;
            }
            else
            {
                In.readLine();
                Out.println("Inkorrekte Eingabe.");
            }
        }while (done == false);
        return number;
    }
```


----------



## SlaterB (14. Nov 2011)

erscheint bei der Operator-Eingabe ganz zuerst gleich 'Falsche Eingabe' usw?
zudem wird mit Zeile 3 'In.readLine();' die erste Eingabe weggeworfen,
das scheint alles nicht vollständig, 

zudem ist das zweite eine Methode mit Rückgabe, das ist im ersten Code eingespart,

wenn der int-Wertebereich eingeschränkt ist, z.B. auf > 0, dann könnte man In.done() ignorieren und nur den int-Wert anschauen,
so wie man den operator im obigen Code anschaut, 
das ist wohl im Allgemeinen nicht der Fall, der Nachteil einer allgemeineren Eingabe


----------



## absolut85 (14. Nov 2011)

nein, beim ersten erscheint nur die fehlermeldung wenn eine falsche eingabe ist, for dem while steht noch ganz normal read.Char()

naja ich werds halt so lassen, ist zwar nicht so schick, aber es erfüllt den zweck.

danke und schönen abend


----------

