Wie verwende ich diesen boolean in einer if-Anweisung?

8
%Vor%

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.

    
user2041920 14.03.2013, 15:03
quelle

8 Antworten

20

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 .

    
Maroun 14.03.2013 15:03
quelle
4

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 .

    
Averroes 14.03.2013 15:04
quelle
3

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%     
Vincent van der Weele 14.03.2013 15:15
quelle
1

Da stop boolesch ist, können Sie diesen Teil folgendermaßen ändern:

%Vor%     
CloudyMarble 14.03.2013 15:04
quelle
1

Versuchen Sie Folgendes: -

%Vor%     
Rahul Tripathi 14.03.2013 15:05
quelle
1

= ist für die Zuordnung

schreibe

%Vor%

oder

%Vor%     
mp5 14.03.2013 15:05
quelle
1

Zusätzlich kannst du einfach

schreiben %Vor%     
Daniel M 14.03.2013 15:06
quelle
1
%Vor%

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.

    
Achintya Jha 14.03.2013 15:04
quelle

Tags und Links