Java Programmierung: Wieso wird in der Konsole nichts ausgeführt?

1 Antwort

Die Schleife wird erst betreten, wenn die Bedingung im Kopf stimmt. Bei dir kann das nicht zutreffen, da die Spieler anfangs noch keine Punkte haben.

Deine Schleife muss stattdessen so lange laufen, bis einer von beiden Spielern die fünf Punkte erhalten hat.

do {
  /* ... */
}
while (punkte1 < maxPunkte && punkte2 < maxPunkte);

PS.: Bleib bei deinen Namen konsistent. Variablen sollten mit einem Kleinbuchstaben beginnen.


Fitness34 
Beitragsersteller
 25.05.2022, 18:57

Achso ok, ich habe es jetzt geändert, aber bei mir erscheint der Print befehl mehrmals auf den Bildschirm

0
Fitness34 
Beitragsersteller
 25.05.2022, 18:58
@Fitness34

Spieler 1 hat=3Spieler 2 hat=2

Spieler 1 hat=3Spieler 2 hat=3

Spieler 1 hat=4Spieler 2 hat=3

Spieler 1 hat=0Spieler 2 hat=0

Spieler 1 hat=1Spieler 2 hat=0

Spieler 1 hat=2Spieler 2 hat=0

Spieler 1 hat=3Spieler 2 hat=0

Spieler 1 hat=3Spieler 2 hat=1

Spieler 1 hat=3Spieler 2 hat=2

Spieler 1 hat=3Spieler 2 hat=3

Spieler 1 hat=3Spieler 2 hat=4

Spieler 1 hat=4Spieler 2 hat=4

Spieler 1 hat=4Spieler 2 hat=5

Spieler 1 hat=4Spieler 2 hat=6

Spieler 1 hat=4Spieler 2 hat=7

Spieler 1 hat=4Spieler 2 hat=8

Spieler 1 hat=5Spieler 2 hat=8

Es sieht so aus

0
SirNik  25.05.2022, 19:02
@Fitness34

Die println Anweisung steht auch im Schleifenkörper, d.h. jeder Durchlauf den die Schleife macht wird auch ausgegeben.
Wenn du nur das Endergebnis ausgegeben haben möchtest, dann musst du die Anweisung nach die Schleife packen (also nach dem schließenden } der Schleife.

Außerdem möchte ich dich noch darauf hinweisen, dass wenn beide das gleiche gewürfelt haben, ihr Punktestand jeweils auf 0 zurückgesetzt wird. Wenn du sagst, es soll dann einfach keine Punkte hinzukommen, dann kannst du den Teil ersatzlos streichen. Wenn das so beabsichtigt ist, dann jut

2
regex9  25.05.2022, 19:12
@Fitness34

Die Ausgaben passen nicht mit der Bedingung überein.

Alles was in deinem Schleifenkörper steht, müsste in meinem Snippet in den do-Block hinein (oder du wechselst bei dir nur den kompletten Ausdruck im Schleifenkopf aus). Die Variablen Spieler1 und Spieler2 brauchen vor der Schleife nur deklariert werden. Eine Definition erfolgt ja im Schleifenblock. Übrig bleibt danach nur noch die Anpassung der Variablennamen.

1
Fitness34 
Beitragsersteller
 25.05.2022, 19:16
@regex9

ich bekomme jetzt zbs Ausgeführt das Spieler 2 10 Punkte hat und Spieler 1 6 Punkte, aber das Spiel geht bis 5? Ist da noch was falsch?

0
regex9  25.05.2022, 19:33
@Fitness34

Das kann wie gesagt nicht mit der Bedingung übereinstimmen. Also ja, du machst wohl etwas falsch.

0