# For Schleife wird nur einmal durchlaufen-Finde Fehler nicht



## Serenity1994 (23. Mai 2017)

Hallo,
ich bin noch blutiger Anfänger und komme nicht weiter. Ist eine Aufgabe aus der Uni, habe auch schon andere in der Uni gefragt, die wissen aber auch nicht weiter.
Meine For-Schleife wird nur einmal durchlaufen, dann stoppt die Schildkröte.
Ich würde gerne wissen wo mein Fehler liegt, finde ihn einfach nicht. 
Über eine Antwort würde ich mich sehr freuen.



```
* @version eclipse JEE Neon, JavaSE-1.8
* Beschreibung: Turtle John
* @since 2017-05-18
* letzte Änderung am 22. Mai 2017
*/

public class TurtleJohnParameter {

    public static void main(String[] args) {

Turtle John = new Turtle();
int index = 0;
Console.init();

John.setFontSize(15);// Schriftgröße der Koordinaten

String richtung; // l = links, r = rechts
int steps; // Vergroesserungsabstand
int loops; // Anzahl der Windungen (also einmal herum um 360 Grad)
int counter; // Zaehler für die Windungen



//Konsole Anfang
Console.println("In welche Richtung soll die Kroete laufen? (l=links, r=rechts)");
richtung = Console.readLine();

Console.println("Wie viele Windungen?");
loops = Console.readInt();

Console.println("Vergroeserungsabstand?");
steps = Console.readInt();
// Konsole Ende

int schrittlaenge = steps;
counter = (int) (loops *4); // 1 Windung sind 4 Windungen
if (richtung =="l")
   
{//Beginn if-Schleife


       for (   index = 0;
               index < counter;
               index ++ )
   


{ //Beginn der Schleife

  John.setPenColor(Color.BLACK);
  John.forward(schrittlaenge);
 
  John.setPenColor(Color.RED);
  John.left(90);
  John.forward(schrittlaenge);
 
  John.setPenColor(Color.GREEN);
  John.left(90);
  John.forward(schrittlaenge);
 
  John.setPenColor(Color.BLUE);
  John.left(90);
  John.forward(schrittlaenge);
  John.left(90);

  double x1 = John.getX(); // liefert die x-koordinate
  double y1 = John.getY(); // liefert die y-koordinate
  John.label((int)x1 + "/"+ (int)y1);
 
  schrittlaenge= schrittlaenge+ steps;
}
}


else if  (richtung=="r")
   
    for (   index = 0;
            index < counter;
            index ++ )
       
    John.forward(schrittlaenge);

    { //Beginn der Schleife
{John.setPenColor(Color.BLACK);
John.forward(schrittlaenge);

John.setPenColor(Color.RED);
John.right(90);
John.forward(schrittlaenge);

John.setPenColor(Color.GREEN);
John.right(90);
John.forward(schrittlaenge);

John.setPenColor(Color.BLUE);
John.right(90);
John.forward(schrittlaenge);
John.right(90);

double x1 = John.getX(); // liefert die x-koordinate
double y1 = John.getY(); // liefert die y-koordinate
John.label((int)x1 + "/"+ (int)y1);


schrittlaenge= schrittlaenge+ steps;

}}//Ende for Schleife


    }//main

}//class
```


----------



## Robat (23. Mai 2017)

Klassischer Fall von schlecht formatierten Code 
Habe mal versuch halbwegs eine Struktur rein zu bringen. Jetzt schau dir mal alle öffnenden / schließenden geschweiften Klammern an und sag mir ob dir was auffällt 


```
else if  (richtung=="r")
    for (   index = 0; index < counter; index ++ )
             John.forward(schrittlaenge);
     { //Beginn der Schleife
           {
               John.setPenColor(Color.BLACK);
               John.forward(schrittlaenge);

               John.setPenColor(Color.RED);
              John.right(90);
              John.forward(schrittlaenge);
              
               //...
          }
     }//Ende for Schleife
```


----------



## Joose (23. Mai 2017)

Formatiere deinen Code richtig dann ist dein Fehler auch ersichtlich 

```
* @version eclipse JEE Neon, JavaSE-1.8
* Beschreibung: Turtle John
* @since 2017-05-18
* letzte Änderung am 22. Mai 2017
*/

public class TurtleJohnParameter {

   public static void main(String[] args) {

       Turtle John = new Turtle();
       int index = 0;
       Console.init();

       John.setFontSize(15);// Schriftgröße der Koordinaten

       String richtung; // l = links, r = rechts
       int steps; // Vergroesserungsabstand
       int loops; // Anzahl der Windungen (also einmal herum um 360 Grad)
       int counter; // Zaehler für die Windungen

       //Konsole Anfang
       Console.println("In welche Richtung soll die Kroete laufen? (l=links, r=rechts)");
       richtung = Console.readLine();

       Console.println("Wie viele Windungen?");
       loops = Console.readInt();

       Console.println("Vergroeserungsabstand?");
       steps = Console.readInt();
       // Konsole Ende

       int schrittlaenge = steps;
       counter = (int) (loops *4); // 1 Windung sind 4 Windungen
       if (richtung == "l") { //Beginn if-Schleife
           for (index = 0; index < counter; index++) { //Beginn der Schleife
               John.setPenColor(Color.BLACK);
               John.forward(schrittlaenge);

               John.setPenColor(Color.RED);
               John.left(90);
               John.forward(schrittlaenge);

               John.setPenColor(Color.GREEN);
               John.left(90);
               John.forward(schrittlaenge);

               John.setPenColor(Color.BLUE);
               John.left(90);
               John.forward(schrittlaenge);
               John.left(90);

               double x1 = John.getX(); // liefert die x-koordinate
               double y1 = John.getY(); // liefert die y-koordinate
               John.label((int)x1 + "/"+ (int)y1);

               schrittlaenge = schrittlaenge + steps;
           }
       } else if (richtung == "r")
           for (index = 0; index < counter; index++)
               John.forward(schrittlaenge);

           { //Beginn der Schleife
               {
                   John.setPenColor(Color.BLACK);
                   John.forward(schrittlaenge);

                   John.setPenColor(Color.RED);
                   John.right(90);
                   John.forward(schrittlaenge);

                   John.setPenColor(Color.GREEN);
                   John.right(90);
                   John.forward(schrittlaenge);

                   John.setPenColor(Color.BLUE);
                   John.right(90);
                   John.forward(schrittlaenge);
                   John.right(90);

                   double x1 = John.getX(); // liefert die x-koordinate
                   double y1 = John.getY(); // liefert die y-koordinate
                   John.label((int)x1 + "/"+ (int)y1);


                   schrittlaenge = schrittlaenge + steps;

               }
           }//Ende for Schleife
   }//main
}//class
```

Anmerkungen zu deinem Code:

Variablennamen werden in lowerCamelCase geschrieben. Daher "Turtle john" und nicht "Turtle John".
Strings werden inhaltlich mit `.equals()` verglichen nicht mit `==`

Bei richtiger formatierung sind Kommentare wie "//Beginn der Schleife" und "Ende for Schleife" unnötig
Es gibt keine if-Schleife --> www.if-schleife.de

Zu dem Fehler schaue dir den else Zweig genauer an!

```
} else if (richtung == "r")
           for (index = 0; index < counter; index++)
               John.forward(schrittlaenge);

           { //Beginn der Schleife
               {
                   John.setPenColor(Color.BLACK);
                   John.forward(schrittlaenge);

                   John.setPenColor(Color.RED);
                   John.right(90);
                   John.forward(schrittlaenge);

                   John.setPenColor(Color.GREEN);
                   John.right(90);
                   John.forward(schrittlaenge);

                   John.setPenColor(Color.BLUE);
                   John.right(90);
                   John.forward(schrittlaenge);
                   John.right(90);

                   double x1 = John.getX(); // liefert die x-koordinate
                   double y1 = John.getY(); // liefert die y-koordinate
                   John.label((int)x1 + "/"+ (int)y1);


                   schrittlaenge = schrittlaenge + steps;

               }
           }//Ende for Schleife
   }//main
```


----------



## Serenity1994 (23. Mai 2017)

Hallo,
vielen Dank füre eure Antworten.
Klappt jetzt auch, die For-Schleifen werden so oft durchlaufen wie sie sollen. :9
Danke
Ein Problem hab ich noch.
Schildi läuft nicht in einer Spirale, sondern in einem komischen Viereck.
Eigentlich müsste ja die Schrittlänge immer größer werden, sodass Schildi in einer vierecken Spirale läuft?
Hättest ihr da für mich noch einen Hinweis?
Hab schon vieles durchprobiert.:/


```
if (richtung.equalsIgnoreCase("l"))
   
    for (index = 0; index < loops; index++)
       
    { //Beginn der Schleife
        john.setPenColor(Color.BLACK);
        john.forward(schrittlaenge +steps);

        john.setPenColor(Color.RED);
        john.left(90);
        john.forward(schrittlaenge+steps);

        john.setPenColor(Color.GREEN);
        john.left(90);
        john.forward(schrittlaenge+steps);

        john.setPenColor(Color.BLUE);
        john.left(90);
        john.forward(schrittlaenge+steps);
        john.left(90);

        double x1 = john.getX(); // liefert die x-koordinate
        double y1 = john.getY(); // liefert die y-koordinate
        john.label((int)x1 + "/"+ (int)y1);

        schrittlaenge = schrittlaenge + steps;}

else if (richtung.equalsIgnoreCase("r"))
   
    for (index = 0; index < loops; index++)
      

    { //Beginn der Schleife
       
            john.setPenColor(Color.BLACK);
            john.forward(schrittlaenge+steps);

            john.setPenColor(Color.RED);
            john.right(90);
            john.forward(schrittlaenge+steps);

            john.setPenColor(Color.GREEN);
            john.right(90);
            john.forward(schrittlaenge+steps);

            john.setPenColor(Color.BLUE);
            john.right(90);
            john.forward(schrittlaenge+steps);
            john.right(90);

            double x1 = john.getX(); // liefert die x-koordinate
            double y1 = john.getY(); // liefert die y-koordinate
            john.label((int)x1 + "/"+ (int)y1);


            schrittlaenge = schrittlaenge + steps;

       
    }//Ende for Schleife
```


----------



## Joose (23. Mai 2017)

Zeichne dir doch mal auf einem karierten Blatt Papier auf wie die Figur geht und wieviele Schritte immer notwendig sind


----------



## VfL_Freak (23. Mai 2017)

Moin,


Serenity1994 hat gesagt.:


> Schildi


WER ist das denn ?? 

VG Klaus


----------



## Serenity1994 (23. Mai 2017)

Schildi = wird dargestellt also eine Schildkröte ^.^

Danke.
Bin weiterhin am nachdenken und probieren.


----------

