# for-schleife + modulo



## Joptionpane (17. Nov 2011)

hallöle progger,

arbeite grad mit javakara, sagt nur manchen was und die kennen sich wohl auch nicht sonderlich damit aus, ist aber hier glaub irrelevant.

Ich will ein Quadrat zeichnen wo jedes 2te feld ein kleeblatt enthält(Die Seitenlänge wird per User angegeben). Das Quadrat wird abgelaufen, nur stimmt wohl was noch nicht mit meinen modulos und for-schleifen, bei ungeraden zahlen geht es, bei geraden nicht(die kleetblätter also), hier mal 2bilder:
Imageshack - unbenanntryv.jpg   // x gleich 7 == richtig
Imageshack - 18822075.jpg  // x gleich 6 == falsch

hier mal der code, kann mir wer helfen?


```
import javakara.JavaKaraProgram;
        
/* BEFEHLE:  kara.
 *   move()  turnRight()  turnLeft()
 *   putLeaf()  removeLeaf()
 *
 * SENSOREN: kara.
 *   treeFront()  treeLeft()  treeRight()
 *   mushroomFront()  onLeaf()
 */
public class Quadrat extends JavaKaraProgram {



  public void myProgram() {
   
   int x;
  x = tools.intInput("Seitenlänge angeben");
   
   
   for (int i=1; i<x; i++){
       
     
      if (i%2==1){
          kara.putLeaf() ;
      }
         kara.move();
   }
   kara.turnLeft();
   for (int i=1; i<x; i++){
       
       
      if (i%2==1){
          kara.putLeaf() ;
      }
         kara.move();
   }
   kara.turnLeft();
   
   
   for (int i=1; i<x; i++){
       
     
      if (i%2==1){
          kara.putLeaf() ;
      }
          kara.move();     
   }
   
   kara.turnLeft();
   for (int i=1; i<x; i++){
       
    
      if (i%2==1){
          kara.putLeaf() ;
      }
         kara.move();
   }
   
  
  }
}
```


----------



## Spacerat (17. Nov 2011)

Oh doch... dieses Javakara dürfte hier vielen was sagen, mir z.B. Mülltonne auf und Schwupp. Java selbst ist eigentlich schon dermassen einfach, als ob man dafür noch diese Logo ähnliche Kindergarten-Turtlelei bräuchte. Einige Dozenten scheinen dies jedoch nicht zu verstehen (möglicherweise steigen sie selbst nicht durch Java durch) und verwirren ihre Schüler mit solch' einem sch... Kram. So viel zu Kara.

Zum eigentlichen Problem: Kara moved bei ungeraden Zahlen halt einmal mehr in die aktuelle Richtung. Lass für x halt nur ungerade Zahlen zu ([c]if(x%2==0) x++;[/c]).


----------



## Joptionpane (17. Nov 2011)

Spacerat hat gesagt.:


> Oh doch... dieses Javakara dürfte hier vielen was sagen, mir z.B. Mülltonne auf und Schwupp. Java selbst ist eigentlich schon dermassen einfach, als ob man dafür noch diese Logo ähnliche Kindergarten-Turtlelei bräuchte. Einige Dozenten scheinen dies jedoch nicht zu verstehen (möglicherweise steigen sie selbst nicht durch Java durch) und verwirren ihre Schüler mit solch' einem sch... Kram. So viel zu Kara.
> 
> Zum eigentlichen Problem: Kara moved bei ungeraden Zahlen halt einmal mehr in die aktuelle Richtung. Lass für x halt nur ungerade Zahlen zu ([c]if(x%2==0) x++;[/c]).




hi, ja ich weiß, bin eigtl. auch nur an Eclipse gewöhnt aber der Prof. besteht nunmal drauf.

Habs jetzt, läuft zumindest auch für gerade Zahlen perfekt, der Code dagegen sieht aber nicht grad sonderlich schön aus  aber es funzt, musste nur den code den ich hier als erstes hatte als if bedingung verschleiern für ungerade zahlen (x%2==1),  in die else dann das  gleiche wie in der if, außer das bei 2 kritieren x%2==1) rauskommen müssen anstatt 0. ) 


```
import javakara.JavaKaraProgram;

/* BEFEHLE:  kara.
 *   move()  turnRight()  turnLeft()
 *   putLeaf()  removeLeaf()
 *
 * SENSOREN: kara.
 *   treeFront()  treeLeft()  treeRight()
 *   mushroomFront()  onLeaf()
 */
public class Scheinaufgabe28 extends JavaKaraProgram {

	public void myProgram() {

		int x;
		x = tools.intInput("Seitenlänge angeben");

		if (x % 2 == 1) {
			for (int i = 1; i < x; i++) {

				if (i % 2 == 1) {
					kara.putLeaf();
				}
				kara.move();
			}
			kara.turnLeft();
			for (int i = 1; i < x; i++) {

				if (i % 2 == 1) {
					kara.putLeaf();
				}
				kara.move();
			}
			kara.turnLeft();

			for (int i = 1; i < x; i++) {

				if (i % 2 == 1) {
					kara.putLeaf();
				}
				kara.move();
			}

			kara.turnLeft();
			for (int i = 1; i < x; i++) {

				if (i % 2 == 1) {
					kara.putLeaf();
				}
				kara.move();
			}
		} else {
			for (int i = 1; i < x; i++) {

				if (i % 2 == 1) {
					kara.putLeaf();
				}
				kara.move();
			}
			kara.turnLeft();
			for (int i = 1; i < x; i++) {

				if (i % 2 == 0) {
					kara.putLeaf();
				}
				kara.move();
			}
			kara.turnLeft();

			for (int i = 1; i < x; i++) {

				if (i % 2 == 1) {
					kara.putLeaf();
				}
				kara.move();
			}

			kara.turnLeft();
			for (int i = 1; i < x; i++) {

				if (i % 2 == 0) {
					kara.putLeaf();
				}
				kara.move();
			}
		}
	}
}
```


----------

