Java: "Solange nicht"?

4 Antworten

Vom Fragesteller als hilfreich ausgezeichnet

Eine Problemlösung wurde dir bereits gegeben, zusätzlich möchte ich noch zwei Punkte anbringen und erklären, wieso du equals für den String-Vergleich verwenden musst.

Zuerst zu letzterem: Der Gleichheitsoperator prüft bei dem Vergleich nicht nur, ob beide Objekte denselben Wert haben, sondern ebenso, ob sie sich an der selben Speicherstelle befinden / ob es sich um dasselbe Objekt auf beiden Seiten handelt.

Die equals-Methode hingegen vergleicht nur den Wert beider String-Objekte.

Weitere Anmerkungen:

1) Du erzeugst je Schleifendurchlauf ein Scanner-Objekt, was ganz sicher nicht notwendig ist. Erstelle es nur einmal, vor der Schleife und schließe den Stream nach Beendigung wieder, sofern du den Eingabestream nicht mehr auslesen musst.

2) Die Methode next gibt dir bereits einen String zurück. Eine Umwandlung (String.valueOf) ist daher unnötig.

Was zeigt das Programm an?

In der while-Bedingung muss es ein großes S sein und in der if geht auch ein kleines? Das if sollte auch mit if(true) gehen

Tyldu  08.09.2019, 15:03

if (true) kann man sich auch direkt sparen.

1

Hallo,

Probier mal bei deiner Abfrage ein while(!startfrage.equals("S")){....

Das müsste eigentlich gehen.

LG

Woher ich das weiß:eigene Erfahrung – Aktiver Serverbastler und Entwickler in Sachen PlugIns
do {
...
} while(!startfrage.equalsIgnoreCase("S"));

strings vergleichst du mit equals, sonst wird nur geprüft ob die referenz gleich ist.

und das ganze löst du mit einer do while schleife. diese wird mindestens immer einmal aufgerufen. die bedingung wird erst nach dem aufruf geprüft.

Woher ich das weiß:Studium / Ausbildung – Softwareentwickler, B. Sc. Informatik