Interessanterweise habe ich noch kein Kind erlebt, dass es aufgibt Laufen zu lernen. Ein Kind lernt nie wieder so viel wie in seinem ersten Lebensjahr. So wie es in diesem Prozess keine festgelegte Anzahl gibt, werden in Java in der while-Schleife keine feste Anzahl an Wiederholungen durchlaufen und es können komplexere Bedingungen getestet werden.
In diesem Artikel lernst Du die Struktur der while-Schleife in Java kennen. Neben der Schleifenstruktur mit Initialisierung, Bedingung und Änderung, werden Anwendungen der while-Schleife und deren Unterschiede zur for-Schleife erklärt. Darüber hinaus wird das Konzept von Flags im Programmieren vorgestellt.
Manche Kinder können schon nach einem dreiviertel Jahr laufen, andere erst nach knapp 2 Jahren. Diesen Prozess kann man nicht beschleunigen. Ein Kind läuft wenn es laufen kann und kein Kind gibt auf.
Man kann keine Vorhersage treffen, man wiederholt solange, bis es klappt. Dieser Ablauf ist in einer for-Schleife nicht vorgesehen, wohl aber in einer while-Schleife. Dies wird dadurch möglich, dass in der while-Schleife die Änderung im Schleifenkörper steht, die Initialisierung vorher festgelegt wird und nur noch die Bedingung im Schleifenkopf steht.
Unser Körper baut Alkohol mit gleichbleibender Geschwindigkeit ab. Dabei geht man von etwa 0,15 ‰ pro Stunde aus. Pro Bier baut man etwa 0,4 ‰ auf. Mit dieser vereinfachten Berechnung, kann man leicht den aktuellen Alkoholwert im Blut bestimmen.
double alkohol = 0.5;
while(alkohol>=0.1)
{ //Wieviele Bier und welcher Zeitraum?
alkohol=bier*0.4-zeit*0.15;
}
Eine while-Schleife kann aber mehr als zählen. Mit ihr kann man auch komplexere Bedingungen prüfen, wie beispielsweise den Alkoholgehalt im Blut.
Das englische Wort "while" bedeutet im deutschen "solange". Mit diesem Wort wird die Logik der Wiederholungsschleife gut beschrieben: Der zu wiederholende Teil wird solange wiederholt wie die Bedingung der Schleife wahr ist.
Die while-Schleife besitzt einen Schleifenkopf mit der Bedingung (Abbruch). Die Initialisierung (Startwert) erfolgt vorab. Der Schleifenkörper wird wiederholt. In ihm steht u.a. die Änderung (Schrittweite). Die Anzahl der Wiederholungen steht aber bei Eintritt in den Schleifenkörper grundsätzlich noch nicht fest.
boolean antwort = true;
if (antwort == true){
System.out.println("stimmt!");
}
while (antwort == true){
System.out.println("stimmt!");
}
In dieser Aufgabe soll der Unterschied zwischen while-Schleife, for-Schleife und einer Entscheidung untersucht werden.
for(int i = 0; i < 10; i++){
System.out.println(i);
}
while(true)
-Schleife keine Änderung im Schleifenkörper benötigt.
int i=0;
while(i < 10){
System.out.println(i);;
i++;
}
true
sowieso immer wahr ist und es sich somit um eine Endlosschleife handelt.Nach dem linearen Notenschlüssel werden Noten wie folgt berechnet:
$$Note=6-5\cdot\frac{erreichte Punktzahl}{Maximalpunktzahl}$$Notenberechnung
. Dabei wird der
Benutzer mit Hilfe einer while-Schleife jeweils
nach der Punkteeingabe und Notenberechung
gefragt, ob er erneut eine Note berechnen
möchte.
while(abfrage == true){
...
Erstelle die Klasse Suedseeurlaub
. Der
Anwender wird nach Flugpreis sowie folgende
weiter Optionen gefragt die er mit j/n auswählt:
eine SMS-Benachrichtigung kostet 2,95 EUR, eine
Reiserücktrittsversicherung 32 EUR und eine
Gepäckversicherung 13 EUR. Ausgegeben wird der
Gesamtpreis.
Wähle die korrekten Aussagen aus.
int i=0;
while(i!=10) System.out.print(i++ +" ");
int n=1;
while(n<=15) System.out.print((n=n+3) +" ");
Gib Bestandteile der while-Schleife an.
Wähle beliebig viele Antworten.
Gib an wie lange eine while-Schleife wiederholt wird.
Wähle beliebig viele Antworten.
int i=11;
while(i!=10){ ... }
Bestimme i
so, dass die Schleife stoppt.
Wähle eine Antwort.
10
9
8
7
int bier=2; double alkohol=1.0;
while(alkohol>=0.0) alkohol=bier*0.4-zeit*0.15;
Bestimme die Zeit bis zum Verlassen. Wähle eine Antwort.
Dieses Rätsel ist ein Klassiker, welches ich Euch nicht vorenthalten möchte:
Ein Bauer möchte sein einzig Hab und Gut, ein Schaf, ein Kohlkopf und ein Wolf, unversehrt mit einem Floß über einen Fluss bringen.
Das Problem: Lässt er Schaf und Kohl allein zurück während er den Wolf über den Fluss bringt, wird der Kohl gefressen. Aber er hat immer nur Platz für eins von dreien. Übrigens: der Wolf frisst unbeaufsichtigt auch das Schaf.
Wie löst er das Problem?
Der Schnee merkt sich jeden Skifahrer. Nicht so ein Taster:
Betätigen wir ihn ändert er seinen Zustand. Doch lassen
wir ihn wieder los, sieht es so aus als wäre er nie betätigt worden.
Taster kommen sehr häufig in Steuerungen zum Einsatz, aber als Button auch in den meisten Apps.
Wenn man nun den Taster dazu bringen könnte, dass er sich wie der Schnee einen Zustand merken könnte hätten wir gewonnen.
Wir lachen bei Witzen, wenn das Überraschungsmoment stimmt. Aber wie können wir uns die Details merken damit dieses Moment rüber kommt?
Der Gedächtnistrainer Markus Hoffmann unvergesslich.de verrät mit welcher Methode man sich diesen Witz ganz einfach merkt: "Stellen Sie sich z.B. den schönen Mann vor, wie er auf Ihrer Handfläche steht. Wenn Sie das nächste Mal einen Witz suchen, werfen Sie einfach einen Blick in Ihre Hand.Die nächsten Witze können Sie dann mit Ihrem Ellenbogen, Ihrer Schulter oder anderen Körperteilen kreativ verknüpfen. Erzählen Sie diese Witze mindestens fünf Personen. Das fördert Ihre rhetorischen Fähigkeiten und Ihr Gedächtnis. Sie werden an der Reaktion Ihrer Mitmenschen merken, welche Teile gut bzw. weniger gut ankommen. Ich finde: "Das ist ein Training, das wirklich Spaß macht!"
Auch beim Programmieren gibt es solche Merkhilfen. Wir nennen sie Flags. Es sind Variablen auf denen ein Zustand gespeichert wird. Beispielsweise wird beim Kaffeeautomat die Auswahl von Milch und Zucker angeboten. So lässt sich der letzte Zustand speichern:
boolean flagmilch = false;
System.out.println("Milch j/n");
auswahl = keyboard.next();
if(auswahl.charAt(0)=='j')
flagmilch=true;
Next steps
Du verstehst die Funktion der while-Schleife und kannst sie programmieren. Außerdem kannst Du Flags zum Speichern von Zuständen einsetzen. Nun kannst du die Aufgaben bearbeiten.
Autoren: G. Kompa, D. Supper
PINeingabe
welche den Anwender auffordert die 4stellige
PIN 1391
einzugeben. Ist
die PIN falsch wird die Eingabe
wiederholt. Ist die PIN 3mal falsch
wird die Eingabe ohne Fehlermeldung
beendet.733019
folgen,
welche bei Bedarf wiederum mit einer
Fehlermeldung endet.
while(pin != eingabe && eingabecount < 3){
eingabecount++;
...
Autoren: D. Supper | binnendifferenziert
Zur Auswahl stehen KAFFEE (1), LATTE MACCHIATO (2), CAPPUCCINO (3), ESPRESSO (4) und Mokka(5). Die Aufgabe besteht darin, das Auswahlmenü des Kaffeeautomaten zu programmieren.
Kaffeeautomat
, mit der Variable String selektor
. Zur Auswahl steht KAFFEE(K)...Für jeden zusätzlichen Wert benötigt man einen eigenen Fall. Außerdem können auch Zahlen als Zeichen geprüft werden.
flagmilch
und flagzucker
. Ergänze die Ausgabe bspw.mit: "KAFFEE wird mit Milch und Zucker zubereitet."
flagerror
erweitert werden. Bei fehlerhafter Eingabe soll im default
-case das Flag auf false
gesetzt werden, ebenso wie die Flags für Milch und Zucker. Mit Hilfe einer while-Schleife wird das Programm solange wiederholt, bis die Eingabe korrekt ist.
String selektor;
selektor = kb.next();
switch(selektor){
case "K": ...
switch(selektor){
case "1":
case "k":
case "K": ...
System.out.print("Milch (j/n): ");
auswahl = keyboard.next();
if(auswahl.charAt(0)=='j') flagmilch = true;
while(flagerror == false){
...
case "K"
flagerror = true;
...
default:
flagerror = false;
}
Autor: Dean Skoda
Wähle die korrekten Aussagen aus.
Gegeben ist die folgende Wettervorhersage. Überprüfe alle Aussagen auf deren Wahrheitsgehalt.
Mi 17 | Do 18 | Fr 19 | Sa 20 | So 21 | Mo 22 | Di 23 | Mi 24 |
6° | 7° | 9° | 8° | 8° | 5° | 4° | 5° |
24% | 15% | 11% | 15% | 57% | 87% | 92% | 46% |
NW | NO | O | O | NW | W | W | SW |
1kmh | 2kmh | 3kmh | 2kmh | 1kmh | 3kmh | 4kmh | 2kmh |
Bei Regen ist die Luftfeuchtigkeit immer über 50 %.
Bei Sonne ist es eindeutig über 5 °C.
Bei bedecktem Himmel ohne Regen beträgt die Windgeschwindigkeit maximal 3 km/h.
Bei Sonne ist es immer mindestens 5 °C und eindeutig mehr als 11 % Luftfeuchtigkeit.
An allen regnerischen Tagen ist die Windrichtung W oder SW oder an allen Freitagen ist es sonnig.
Die Temperatur beträgt niemals nicht über mindestens 5 °C und Mittwochs hat es eindeutig mehr als 23 % Luftfeuchtigkeit.
die while-Schleife, -en | Die while-Schleife ist eine kopfgesteuerte Schleife, die einen Anweisungsblock solange wiederholt bis die Bedingung falsch wird. |
die Initialisierung, -en | hier wird der Startwert vor der Schleife festgelegt. |
die Bedingung, -en | Sobald die Bedingung den Wert
false ergibt wird die
Schleife verlassen. Nur diese
steht im Schleifenkopf. |
die Änderung, -en | Die Änderung findet im Schleifenkörper statt. Dadurch können komplexere Bedingungen geprüft werden. |
das Flag, -s | Ein Flag ist eine Variable vom
Datentyp boolean auf
der Zustände gespeichert werden. |