Ich versuche einen Taschenrechner mit Java zu programmieren, warum wiederholt sich die do-while-Schleife nicht, wenn.....?

4 Antworten

Typischer Flüchtigkeitsfehler. Das while(bool = false) muss natürlich while (bool == false) heißen, sonst weist du der Variable nur den Wert zu, anstatt den Wert abzufragen. Mir passiert das aber auch recht häufig. Vorallem, weil ich auch viel in anderen Programmiersprachen unterwegs bin, in denen es mit einem einzelnen Gleich-Zeichen richtig wäre.

Ob da noch mehr im Argen ist kann ich nicht sagen, aber es fällt auf, das deine "else"- Zweige nicht in Klammern sind, ansonsten wie daCyper sagt der bool-Vergleich, wobei ich (!bool) bevorzugen und bool als Namen nicht verwenden würde, da die eine "Sprachvokabel" ist , lieber vor der Schleife bool eingabe = false; und dann while(eingabe)

while(bool = false);

du möchtest eine Abfrage machen ob "bool" gleich "false" ist. Dies geschieht in Java mit "==", du hast stattdessen eine Zuweisung gemacht.

die Zeile müsste so hier aussehen:

while(!bool);

bzw. 

while(bool == false)
-> macht in beiden fällen das Selbe

Das Ausrufezeichen negiert hierbei den Wert.

Woher ich das weiß:Berufserfahrung – Java Entwickler

Gehilfling  14.06.2018, 15:12

... und da Zuweisungen vom Compiler als korrektes Statement erkannt werden, erhälst du hier immer "true".

1
Eismensch  14.06.2018, 15:20
@Gehilfling

Hmm ich habe das gerade mal durchdebuggt:
Nein, die do-while-Schleife wird bei der Zuweisung abgebrochen.
Deine Aussage scheint also nicht zu stimmen.

1
Gehilfling  15.06.2018, 08:45
@Eismensch

Kommt dann wohl auf den Compiler an. Ich habe schon mit einigen gearbeitet, die eine Zuweisung als gültigen Ausdruck erkennen und dadurch eine fälschliche Zuweisung statt Gleichsetzung als "true" auswerten.

0
stupidity430 
Fragesteller
 14.06.2018, 15:24

Vielen Dank :-)

0

1.) Solltest du bool sicherheitshalber initialisieren.

2.) Könnte ich mir vorstellen, dass der Eingabestream anfangs nicht leer ist... gib Mal Eingabe aus und schau, was darin enthalten ist...


Destranix  14.06.2018, 14:39

Habe es gerade bei mir getestet und es funktioniert einwandfrei!

1
Eismensch  14.06.2018, 15:04
@Destranix

Kann es nicht, wenn die Bedingung eigentlich eine Zuweisung ist ;)

2
Destranix  14.06.2018, 15:08
@Eismensch

Komisch...

Du hast recht...

Und trotzdem funktioniert es bei mir...

Vielleicht ist Bluej einfach idiotensicher und korrigiert das automatisch...

1
Eismensch  14.06.2018, 15:09
@Destranix

Haha, das wäre aber keine gute Software zum lernen. Gerade solche "kleinen" Fehler sind am Anfang die häufigsten. Wenn man nie darauf hingewiesen wird, kommt man später wohl etwas ins straucheln^^

1
Destranix  14.06.2018, 15:11
@Eismensch

Ich untersuche das gerade...

Das ist verdammt merkwürdig...

1
Destranix  14.06.2018, 15:14
@Eismensch

Hab das gearde gegoogelt und laut der Docuumentation scheiont Bluej das tatsächlich zu tun...

1
Eismensch  14.06.2018, 15:21
@Destranix

Meh, ich bin ein wenig geteilter Meinung ob das "gut" oder "schlecht" ist.

1
Destranix  14.06.2018, 15:24
@Eismensch

Eher schlecht, denn BlueJ wird hauptsächlich von Schulen verwendet...

Außerdem wird der Code nicht korrigiert sondern lediglich anders interpretiert, was dann zu Problemen führen kann, wenn man einen anderen Compiler verwendet...

0
Eismensch  14.06.2018, 15:26
@Destranix

Oh, ich dachte, dass die IDE das wenigsten richtig stellt. Stattdessen werden hier aktiv Fehler "unterschlagen". Das ist leider keine gute Arbeitsweise für eine "Lern"-Software :/

Naja, aber wieder was gelernt ^^
BlueJ == böse!

0
Destranix  14.06.2018, 15:27
@Eismensch

Ich weiß aber nicht, ob das bei einer neueren Version auch noch so ist...

Aber das ist sowieso egal, denn die neuere Version schmiert aufgrund der GUI immer ab...

0