Frage von Flo3838, 42

Was ist an diesem Programm falsch(Hamstersimulator Java)?

void main() {int schritte = 0;int ansage;String text;ansage = liesZahl("Was soll ich tun?");while (ansage < 4) {if (ansage == 1) {schritte = liesZahl("Wie viele Felder?");for (int a = 0; a < schritte; a = a+1) {if (vornFrei()) {vor();schritte = schritte -1;}else {schreib ("das geht nicht!");}ansage = liesZahl("Was soll ich als nächstes tun?");}}if (ansage == 2) {linksUm();linksUm();linksUm();ansage = liesZahl("Was soll ich als nächstes tun?");}if (ansage == 3) {linksUm();ansage = liesZahl("Was soll ich als nächstes tun?");}}}

es geht darum das er sich immer nur 1 Feld vor bewegt und die For schleife nicht aktiviert wird...

Hilfreichste Antwort - ausgezeichnet vom Fragesteller
von regex9, 8

Immer dann, wenn du mit dem Hamster einen Schritt vorangehst, zählst du auch die Variable schritte herunter und beraubst ihn damit um Schritte, die er hätte ursprünglich gehen können.

Bsp.: Der Hamster soll 4 Schritte gehen.

  • Iteration 1: a = 0, schritte = 4 >> 1x vor
  • Iteration 2: a = 1, schritte = 3 >> 2x vor
  • Iteration 3: a = 2, schritte = 2 >> 3x vor

und die For schleife nicht aktiviert wird...

Was du damit meinst, kann ich dir jedoch nicht sagen.

Kommentar von Flo3838 ,

Du hast recht! du hast mir echt geholfen ich hatte eine } falsch gesetzt und die variable schritte musste weg wie du es gesagt hast/erklärt

Antwort
von Raylobeen, 27

Hmm, es fehlt.

Kommentar von Flo3838 ,

ja ich kam auf enter und jaaa... jetzt ist es da

Antwort
von Flo3838, 21

void main() {
int schritte = 0;
int ansage;
String text;
ansage = liesZahl("Was soll ich tun?");
while (ansage < 4) {
if (ansage == 1) {
schritte = liesZahl("Wie viele Felder?");
for (int a = 0; a < schritte; a = a+1) {
if (vornFrei()) {
vor();
schritte = schritte -1;
}
else {
schreib ("das geht nicht!");
}
ansage = liesZahl("Was soll ich als nächstes tun?");
}
}
if (ansage == 2) {
linksUm();
linksUm();
linksUm();
ansage = liesZahl("Was soll ich als nächstes tun?");
}
if (ansage == 3) {
linksUm();
ansage = liesZahl("Was soll ich als nächstes tun?");
}
}
}

Es geht darum das die For Schleife nicht aktiviert wird und nur 1 schritt gesetzt wird

Kommentar von regex9 ,
Kommentar von regex9 ,

Und nochmal ordentlicher: http://pastebin.com/zqPnPBp5

Merke:

  • Es gibt Inkrementation (a +=1 >> a++)
  • Innerhalb der Iterationsschleife sollte sicherlich nicht je Durchlauf die Variable ansage neu gesetzt werden
  • Nutze switch oder if-else if, um mehrere Kontrollanweisungen zu bearbeiten, wo sicher ist, das darauffolgende Bedingungen nicht erfüllbar sind
  • Fasse Gleiches zusammen
  • Nutze Funktionen oder Methoden sowie aussagekräftige Variablennamen

Keine passende Antwort gefunden?

Fragen Sie die Community