# Schachbrettmuster mit for-Schleifen



## HappyTom (28. Jul 2009)

Hallo zusammen, 
seit gestern versuche ich mittels 2 geschachtelter Schleifen ein Schachbrettmuster zu generieren was mir leider noch nicht gelingt.
Hier erstmal der Code:
[Java]
                int a = 8;
		int b = 8;

			for (int k= 1;k<=b; k++){

				for(int i =1 ; i<=a; i++){
					if(i%2!=0)
						System.out.print("***");
					else
						System.out.print("+++");
                                }

				System.out.print("\n");
			}
	}

}[/code]


Ich glaube es hat was mit der if Abfrage zu tun aber sicher bin ich mir da nicht.Kann mir vieleicht jemand einen Tip geben?
Danke schonmal im Voraus!

Grüße HappyTom


----------



## Landei (28. Jul 2009)

Wie groß sollen denn die Felder werden? Einfach abwechselnd ginge so:


```
int a = 8;
        int b = 8;
    
            for (int k= 1;k<=b; k++){
                for(int i =1 ; i<=a; i++){
                    if((i + k) % 2 !=0)
                        System.out.print("*");
                    else
                        System.out.print("+");
                    }
                System.out.print("\n");
            }
```

Willst du 3x3 große Felder, dann so:

```
int a = 8;
        int b = 8;
    
            for (int k= 1;k<=b; k++){
              for(int z =1; z <= 3; z++) {
                for(int i =1 ; i<=a; i++){
                    if((i + k) % 2 !=0)
                        System.out.print("***");
                    else
                        System.out.print("+++");
                    }
                System.out.print("\n");
              }
            }
```


----------



## HappyTom (28. Jul 2009)

8 felder daher auch die beiden integer,bei mir sah die Ausgabe immer so aus:
[Java]
***+++***+++***+++***+++
***+++***+++***+++***+++
***+++***+++***+++***+++
***+++***+++***+++***+++
***+++***+++***+++***+++
***+++***+++***+++***+++
***+++***+++***+++***+++
***+++***+++***+++***+++
[/code]

Ich hatte   noch Probleme mit dem abwechselnden Muster und dachte mit der if Abfrage wäre was falsch gewesen.


----------



## Marco13 (28. Jul 2009)

Das war sie auch. Das i%2 prüft, ob man in einer geraden Spalte ist. Das (i+k)%2 überprüft zusätzlich die Zeile.


----------



## Landei (28. Jul 2009)

Eigentlich ganz einfach: Wenn in deiner Bedingung k als Zeilen-Variable keine Rolle spielt, muss jede Zeile logischerweise gleich aussehen.


----------



## HappyTom (28. Jul 2009)

Alles klar vielen danke für die Hilfe


----------



## icarus2 (28. Jul 2009)

Also wenn du eine unabhängige Methode schreiben willst, die ein Schachbrett mit n, wobei n eine natürliche Zahl ist, Feldern zeichnet, dann könntest du das in etwa so machen:

[Java]
protected void drawQueens(Graphics g, int amountOfFields){

		int x = 5;
		int y = 5;
		final int WIDTH = 200;
		final int HEIGHT = 200;

		//horizontal lines
		for(int i = 0; i <= amountOfFields; i++){

			g.drawLine(x, y, x + WIDTH, y);

			y += HEIGHT / amountOfFields;	
		}

		x = 5;
		y = 5;

		//vertical lines
		for(int i = 0; i <= amountOfFields; i++){

			g.drawLine(x, y , x, y + HEIGHT);

			x += WIDTH / amountOfFields;
		}

}
[/Java]

Edit:
Für meine Methode wird allerdings eine grafische Oberfläche (z.B. ein Applet, Swing oder SWT) gebraucht.


----------



## Landei (28. Jul 2009)

Wir spielen hier mit der Konsole rum, verwirr jetzt bloß nicht den TO mit deinem Swing 

(und wenn du unbedingt ein Schachbrett zeichnen willst, warum dann nur mit Linien statt mit schwarzen und weißen Quadraten?)


----------



## icarus2 (29. Jul 2009)

Ich hatte mich oben verguckt und dachte ihr wollt ein Schachbrett mit einfachen Linien zeichen... ist wohl schon etwas spät und meine Augen spielen etwas verrückt ^^


----------

