# Schachbrett



## Batki (20. Okt 2017)

Hey Leute!
Habe eine Aufgabe bekommen, wo ich ein n*n großes Schachbrett erstellen soll. Schwarze Felder werden mit * gekennzeichnet, weiße Felder mit einem Leerzeichen. Es startet mit einem schwarzen Feld. Die Eingabe ist eine positive, ganze Zahl (Integer).
Zwei Sachen, die mich hierbei zum grübeln bringen:
1. Die Eingabe kann eine ungerade Zahl sein ( z.B. 7*7).
2. Jede Zeile hat einen anderen Anfang ( die erste schwarz, die zweite weiß usw.)

Wäre cool wenn mir da jemand einen Ansatz oder ne Idee mit auf den Weg geben kann.
Vielen Dank schonmal.
Batki


----------



## JCODA (20. Okt 2017)

addiere mal die x und y koordinate von jedem Feld, welche Eigenschaft haben alle schwarze und welche haben weiße Felder?


----------



## Batki (20. Okt 2017)

Aus dieser Aussage werde ich nicht so wirklich schlau..
Hat jemand eine andere Erklärung?


----------



## Meniskusschaden (21. Okt 2017)

Hast du es denn gemacht und dir die Zahlen angesehen?
Fange doch erst einmal mit einem Programm an, dass für alle Felder * ausgibt. Dann kannst du im nächsten Schritt den Vorschlag von @JCODA einbauen.


----------



## Batki (22. Okt 2017)

Habe verstanden das alle schwarzen Felder gerade Zahlen und alle weißen Felder ungerade Zahlen sind. Wie kann man diese denn jetzt so definieren das sich schwarz und weiß immer abwechselt?
Hier habe ich mal meinen Code gepostet damit ihr seht wo ich feststecke:



```
/******************************************************************************
*  Compilation:  javac Schachbrett.java
*  Execution:    java Schachbrett n
*  Test:         ./gradlew testen
*
*  Eingabe: Eine positive, ganze Zahl n.
*  Ausgabe: Ein Schachbrett der Groesse n * n. Schwarze Felder werden durch einen
*  Stern '*', weisse Felder durch ein Leerzeichen ' ' dargestellt. Das Brett
*  beginnt mit einem schwarzen Feld.
*
* Ueberpruefen Sie, dass die Eingabe positiv ist. Wenn die Eingabe nicht positiv ist,
* soll das Programm ERROR ausgeben. Andere Fehleingaben koennen Sie ignorieren.
*
******************************************************************************/

public class Schachbrett {
    public static void main(String[] args) {
    int n = Integer.parseInt(args[0]);
   
    if (n < 0) {
    System.out.println("ERROR");
    }

    else {
        for (int i = 0; i < n; i++) {
            for (int j = 0; j < n; j++) {
            System.out.print("*");
                for (int a = 0; a < n; a++) {
                System.out.print(" ");
                break;
                }
            }
        System.out.println();
        }
    }
    }

}

/*    if (n % 2 == 0)
    if (n % 2 != 0)
*/
```


----------



## Meniskusschaden (22. Okt 2017)

Der Sinn der inneren Schleife ist mir nicht klar (mit der Laufvariablen a). Meines Erachtens kannst du die ersatzlos streichen.



Batki hat gesagt.:


> Wie kann man diese denn jetzt so definieren das sich schwarz und weiß immer abwechselt?


Du kannst einfach mit einer if-Anweisung prüfen, ob die Summe gerade ist. Falls ja, gibst du ein schwarzes Feld aus, andernfalls ein weißes.


----------



## Javinner (24. Okt 2017)

@Batki
Schau dir das Schachbrett mal an https://image.freepik.com/freie-ikonen/schachbrett_318-30285.jpg

Besprechen wir die erste Zeile:
Hier liegt unser Augenmerk auf der `X-Achse`
Weiß, Schwarz...Weiß, Schwarz.
Gerade, Ungerade...Gerade, Ungerade //Denk an Modulo
Besprechen wir die zweite Zeile:
Hier liegt unser Augenmerk auf der `Y-Achse`
Erste Zeile Weiß, zweite Zeile Schwarz
Gerade, Ungerade//Denk an Modulo
Unbedingt zu beachten wäre, dass in Java die Anzahl bei Null beginnt!
Dem entsprechend sollte man den Modulo-Operator richtig einsetzen.
http://openbook.rheinwerk-verlag.de/javainsel/javainsel_02_004.html

Wenn du alles richtig gemacht hast, sollte dein Feld so aussehen:
W: Weiß, S: Schwarz

```
W S W S W S W S
S W S W S W S W
W S W S W S W S
S W S W S W S W
W S W S W S W S
S W S W S W S W
W S W S W S W S
S W S W S W S W
```


----------

