Warum Endlosschleife?

Oliver Gierke

Erfahrenes Mitglied
Hallo zusammen,

ich brüte seit ner halben stunde an folgendem Code:

Code:
for (int i = 0; i < n-1; i++) {

			while (in = true) {
				
				in = false;
				random = (int) (Math.random()*m);
				for (int j = 0; j <= i; j++) {
					if (list[j]==random) {
						in = true;
						break;
					}
				}
			}
			list[i]=random;
		}

das gute stück hängt in ner endlosschleife. In n ist die länge von list gespeichert, m gibt die obergrenze der zufallszahlen an. das problem lautet "ziehen ohne zurücklegen" sprich ich muss testen, ob die erzeugte zahl schon in der liste ist (innere for-schleife). in ist dann der passende boolean wert. in ist vor der while schleife selbstverständlich auf true gesetzt worden.

Is bestimmt ganz simpel, nur bin ich grad irgendwie betriebsblind...

Danke

Ollie

PS die liste wurde vorher komplett mit m belegt, so dass für die erste zahl schon mal gar kein in = true möglich sein kann...
 
Ohne deine Beschreibung durchgelesen zu haben, der Fehler steckt hier:

Code:
while (in = true) {
in = true ist eine Zuweisung, kein Vergleich. Was du willst, ist in == true.
 
Ich will ja nicht vorlaut wirken, aber man kann sich auch angewöhnen

(true == in)

anstatt

(in ==true)

zu schreiben, vergisst man dann ein = gibts wenigstens gleich 'ne Fehlermeldung
 
PeteProgram hat gesagt.:
Ich will ja nicht vorlaut wirken, aber man kann sich auch angewöhnen

(true == in)

anstatt

(in ==true)

zu schreiben, vergisst man dann ein = gibts wenigstens gleich 'ne Fehlermeldung


Das ist ja jenseits von Gut und Böse ;) Da quäl ich mich ja net nur ne halbe Stunde an nem Fehler, sondern quäle mit dieser Schreibweise meine Augen während des programmierens ;)
 
Zurück