while-Schleife in Java

Bei einer while-Schleife wird eine bestimmte Abfrage solange wiederholt bis die vorgegebene Bedingung erfüllt ist. In dem unten angeführten Beispiel also so lange, bis der Tipp mit der zufällig generierten Nummer übereinstimmt.

 

#include <cstdlib>
#include <iostream>
#include <time.h>

using namespace std;

int main(int argc, char *argv[])
{
	int tipp;
	
	tipp = 0;
	
	srand( time(NULL) );
	int zufall = rand() % 10 + 1 ;
	
	while ( zufall != tipp )
	{
		// Eingabe
		cout << "Bitte geben Sie ihren Tipp ab: " << endl;
		cin >> tipp;
	}
	
	cout << "Sie Fuchs!" << endl;
	
	
	system("PAUSE");
	return EXIT_SUCCESS;
}

 

rand macht nichts anderes als eine Zufallszahl zu generieren.

Zuerst müssen wir einmal die Standardlibrary <cstdlib> einlesen lassen. Dies geschieht mit dem Befehl #include <cstdlib>.

Um srand mit der Funktion time verwenden zu können, müssen wir wieder eine Headerdatei, in unserem Beispiel mit dem Befehl #include <time.h> einlesen.

Der Zahlenbereich von srand reicht von 0 bis 32767. Da es nicht sinnvoll ist eine Zahl in einem solch großen Bereich zu erraten schränken wir diesen Zahlenbereich mit dem Befehlszusatz % 10 ein. Um nun wirklich einen Bereich von 1 bis 10 zu erhalten wird diesem Befehl noch der Ausdruck + 1 hinzugefügt. Ergibt also den ganzen Befehl: int zufall = rand() % 10 + 1 ;.

Wenn Sie wollen, dass eine Schleife auf jeden Fall einmal durchläuft machen Sie dies mit einer do-while Schleife. Übersetzt würde dies soviel heißen wie: Mach etwas solange bis …

 

Diese würde in unserem Fall so aussehen:

    do
    {
	    // Eingabe
	    cout << "Bitte geben Sie ihren Tipp ab: " << endl;
	    cin >> tipp;
    }
    while ( zufall != tipp )

 

Wichtig: while-Schleifen haben, wie alle anderen Schleifen auch, die dumme Angewohnheit, dass, wenn die Bedingung nicht erfüllt ist diese Schleife ewig läuft, sie damit eine Endlosschleife haben und dadurch einen Absturz produzieren und Ihr System in den Keller ziehen. Daher immer darauf achten, dass die Bedingung auf jeden Fall einmal nicht erfüllt ist.