# While Schleife mit Operatoren



## Hadyaner (21. Nov 2010)

hey, ich bins wieder -.- ich wollte ein Programm mit einer While Schleife schreiben, dass den Benutzer auffordert eine gerade Zahl einzugeben, wenn er das tut wird diese Zahl durch 2 dividiert und wenn er keine gerade Zahl eingibt, wird er immer wieder gefragt, bis er es halt tut, negative Zahlen erstmal ausgenommen.
Folgendes hab ich schon

```
import java.util.*;
public class rtestb5 {

	public static void main(String[] args) {
		Scanner console = new Scanner(System.in);
		
		System.out.print("Eine gerade Zahl bitte : ");
		int zahlenEingabe = console.nextInt();
		
		
		while (zahlenEingabe != "ich weiss nicht wie ich hier GERADE ZAHLEN einbinde") {
		System.out.print("Eine gerade Zahl bitte : ");
		int halbieren = zahlenEingabe/zahlenEingabe;
		System.out.println("Die Hälfte der Zahl ist : " +halbieren);
		}
		

	}

}
```


----------



## Marcinek (21. Nov 2010)

Wenn es sich um eine gerade Zahl handelt, dann wird modulo 2 == 0 ergeben.


----------



## gman (21. Nov 2010)

Und ich würde in der Schleife als Abbruchbedingung die Eingabe von "0" nehmen und nicht die Teilbarkeit durch
zwei. Denn die Schleife soll ja durchaus weiter laufen wenn die Zahl nicht durch zwei teilbar ist.
In der Schleife kannst du dann mit "if" unterscheiden ob die zahl gerade oder ungerade ist (folge dem Tipp von
Marcinek).


----------



## Hadyaner (21. Nov 2010)

Kann man irgendwie schreiben : Solange zahlenEingabe nicht null und nicht teilbar durch 2 ist ?


```
while (zahlenEingabe != % 2 == 0)
```

sogehts irgendwie nicht ^^
@gman
wir sollen nur die while Schleife nutzen -.-" Leider.


----------



## Michael... (21. Nov 2010)

Schau Dir das nochmal an und versuche es mal selbst zu lesen:


Hadyaner hat gesagt.:


> ```
> while (zahlenEingabe != % 2 == 0)
> ```


----------



## Hadyaner (21. Nov 2010)

Michael... hat gesagt.:


> Schau Dir das nochmal an und versuche es mal selbst zu lesen:



jap, falsch gepostet sry ... while (zahlenEingabe <= 0 && zahlenEingabe % 2 == 0)

ich will nur, dass ich nicht gerade sondern ungerade Zahlen abfangen will, wie funktioniert das ?


----------



## Michael... (21. Nov 2010)

z.B
zahlenEingabe % 2 != 0
oder
zahlenEingabe % 2 == 1
oder...


----------



## Hadyaner (21. Nov 2010)

Danke, ja ich weiß die Fragen sind nicht so schwer, aber ich bin ziemlich neu im programmieren und im Kopf weiß ich die ganzen Schritte, aber nicht immer wie ich sie verarbeiten muss.


----------



## XHelp (21. Nov 2010)

Dafür lohnt sich aber eher eine do..while Schleife zu nehmen.
Oder du kannst es auch mit abbruchbedingung arbeiten

```
boolean canStop = false;
while (!canStop) {
  //zahleinlesen, irgendwas machen
  //bei gerader Zahl canStop auf true setzen
}
```
oder es mit deiner Zahl machen:

```
int zahlenEingabe = 1; //eine ungerade Zahl
while (zahlenEingabe%2!=0) {
  //zahl einlesen, irgendwas machen
}
```


----------



## Hadyaner (21. Nov 2010)

do/while schleife klingt gut ,die hatten wir leider noch nicht ,


```
System.out.print("Eine gerade Zahl bitte : ");
		int zahlenEingabe = console.nextInt();
		
		do {
			zahlenEingabe/zahlenEingabe ;
			} while (zahlenEingabe % 2 != 0);
```
So funktioniert es nicht .... ich habgrad n Brett vorm kopp irgendwie .....;(


----------



## XHelp (21. Nov 2010)

Das ganze macht wenig Sinn. Zeile 5 macht überhaupt keinen und keine Eingabe IN der Schleife auch nicht.
Es was so geplant:

```
int zahlenEingabe;
do {
  zahlenEingabe = console.nextInt();
} while (zahlenEingabe%2!=0);
System.out.println(zahlenEingabe/2);
```
(oder so ähnlich)


----------



## Hadyaner (22. Nov 2010)

okay ,

```
import java.util.*;
public class rtestb5 {

	public static void main(String[] args) {
		Scanner console = new Scanner(System.in);
		
		System.out.print("Eine gerade Zahl bitte : ");
		
		int zahlenEingabe;
		do {
		  zahlenEingabe = console.nextInt();
		} while (zahlenEingabe%2!=0);
		System.out.println(zahlenEingabe/2);
	}
}
```
Das funktioniert soweit, nur dass ich die ungeraden Zahlen nicht abfangen kann, kann ich das noch irgendwie verschachteln oder ähnliches ? Pseudocode : Wenn zahlenEingabe UNGERADE ist dann
System.out.print("Eine gerade Zahl bitte : ")


----------



## Michael... (22. Nov 2010)

Du wirst es nicht glauben, aber so ein Code wird in der Reihenfolge abgearbeitet, wie Du ihn hinschreibst ;-)

Wenn die Ausgabe in der Schleife passieren soll, muss die Ausgabe also auch da rein:

```
Scanner console = new Scanner(System.in);
                
        int zahlenEingabe;
        do {
          System.out.print("Eine gerade Zahl bitte : ");
          zahlenEingabe = console.nextInt();
        } while (zahlenEingabe%2!=0);
        System.out.println(zahlenEingabe/2);
```


----------



## henpara (22. Nov 2010)

> System.out.print("Eine gerade Zahl bitte : ");


einfach mit in die Schleife.

Bei dir steht EINMAL System.out.print, danach nie wieder, kein Wunder also.

Wenn du doch "im Kopf" weißt, was du willst, dann solltest du dir einfach nochmal genauer anschauen, was die einzelnen Abschnitte/Methoden/Schleifen, die du benutzt genau machen.


----------



## Hadyaner (22. Nov 2010)

-.-, gut Danke an alle , habs jezt endlich verstanden!


----------

