Dies ist ein Stück Code für ein Projekt, das ich in einem Programmierkurs mache. Das Problem, das ich habe, ist, dass ich nach dem Booleschen Stoppen und dem Versuch, ihm einen zufällig generierten booleschen Wert zuzuweisen, in der if-Anweisung nicht bestimmen kann, ob ich mehr y's an den StringBuffer anhängen soll oder nicht. Ich habe den Zufallsgenerator in einem Konstruktor, so dass dieser Teil kein Problem ist. Ich nahm an, dass ich, da ich den Boolean außerhalb der if-Anweisung deklarierte, in der Lage wäre, ihn innerhalb zu verwenden, aber das scheint nicht der Fall zu sein. Die wirkliche Frage ist, wie kann ich einen zufällig bestimmten boolean in einer if-Anweisung verwenden.
if(stop = true)
sollte if(stop == true)
sein, oder einfach (besser!) if(stop)
.
Das ist eigentlich eine gute Gelegenheit, einen Grund dafür zu finden, warum man if(something)
immer benutzt, wenn man sehen will, ob es true
ist, anstatt if(something == true)
(schlechter Stil!) zu schreiben.
Indem Sie stop = true
ausführen, weisen Sie true
zu stop
zu und vergleichen nicht.
Warum wurde der Code unterhalb der if
-Anweisung ausgeführt?
Siehe JLS - 15.26. Zuweisungsoperatoren :
Zur Laufzeit ist das Ergebnis des Zuweisungsausdrucks der Wert von die Variable nach der Zuweisung aufgetreten ist. Das Ergebnis eines Zuweisungsausdruck ist selbst keine Variable.
Also, weil du stop = true
geschrieben hast, erfüllst du die Bedingung if
.
Das Problem hier ist
wenn (stop = true)
eine Zuweisung ist, kein Vergleich.
Versuchen Sie if (stop == true)
Werfen Sie auch einen Blick auf die Top-Ten-Fehler, die Java-Programmierer machen .
Eigentlich wäre der gesamte Ansatz sauberer, wenn Sie nur eine Instanz von StringBuffer verwenden müssten, anstatt eine in jedem rekursiven Aufruf zu erstellen ... Ich würde gehen nach:
%Vor% Da stop
boolesch ist, können Sie diesen Teil folgendermaßen ändern:
oder
%Vor%= ist für die Zuweisung.
== dient zur Überprüfung der Bedingung.
%Vor%Er weist true to stop zu und bewertet ob (true). Daher wird der Code immer ausgeführt, wenn "stop" immer mit "true" zugewiesen wird.
Tags und Links java if-statement boolean