Schachbrett

Batki

Mitglied
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

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

Meniskusschaden

Top Contributor
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

Mitglied
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:


Java:
/******************************************************************************
*  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

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

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

Top Contributor
@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
Java:
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
 
Zuletzt bearbeitet:

Neue Themen


Oben