Java Schachbrett erstellen?
Hallo,
ich bin am Verzweifeln. Mein Kollege und ich sitzen seit acht Stunden und versuchen herauszufinden, wie man ein Schachbrettmuster mit Java erstellt.
Hier vielleicht die Aufgabenstellung:
Für ein textbasiertes Schachprogramm wollen wir ein einfaches Schachfeld zeichnen. Schwarze Felder werden dabei mit einen Stern ( * ), weiße Felder durch ein Leerzeichen repräsentiert. Schreiben Sie ein Programm Chess , welches eine positive, ganze Zahl n als Argument von der Konsole übergeben bekommt und ein Schachbrett der Größe n × n auf der Standardausgabe ausgibt. Das Brett beginnt oben links mit einem schwarzen Feld. Wenn kein Argument angegeben wird oder die eingegebene Zahl negativ ist, soll das Programm eine Fehlermeldung ausgeben, welche mit ERROR beginnt.
Wir benutzen Eclipse und haben versucht mit Arrays zu arbeiten, allerdings kommen wir nicht auf die Lösung!
Daher brauchen wir Hilfe.
Mit freundlichen Grüßen
So sieht es momentan aus
4 Antworten
Teilt die Aufgabe auf:
- Wie kann ein einziges Feld des Schachbretts gezeichnet werden?
- Wie kann eine einzige Reihe (bzw. wie können mehrere Spalten) des Schachbretts gezeichnet werden?
- Wie können mehrere Reihen eines Schachbretts gezeichnet werden?
Wie ihr merken solltet, stellt Punkt 2 eine Wiederholung von Punkt 1 dar und Punkt 3 eine Wiederholung von Punkt 2. Schleifen sind an der Stelle also angebracht.
Des Weiteren wäre es hilfreich, ermitteln zu können, ob ihr gerade eie un-/gerade Spalte vor euch habt. Eine Division mit Rest (Modulodivision) durch 2 liefert eine Antwort.
Rechenbeispiele:
4 % 2 = 0
5 % 1 = 1
Ein Schachbrett fängt oben links immer mit einem weißen Feld an, aber egal.
Ihr müsst ein zwei dimensionslesen Array machen. Das äußere hält die Reihen, die inneren die Felder für eine Reihe, zb.
[[*,_,*],
[_,*,_],
[*,_,*]]
Dann könnt ihr mit Array[1][1] bspw hier auf das mittlere Feld zugreifen.
public static void chess(int n) {
for(int reihe = 0; reihe < n; reihe++) {
for(int spalte = 0; spalte < n; spalte++) {
if ((spalte+reihe)%2 == 0) System.out.print("*");
else System.out.print(" ");
}
System.out.println(); //Am Ende jeder Reihe einen Newline-Character printen
}
}
Es geht ihnen doch rein um die Ausgabe des Musters, was will man da mit einem Array. In der Frage klang das für mich eher einfach danach, dass sie keinen Plan haben und dachten dafür bräuchte man vlt. ein Array.
Und warum braucht man kein Array? Es geht doch um ein Zweidimensionales Muster.
Ein Array benutzt man, um etwas zu speichern.
In dem Fall willst du das Muster aber einfach nur in der Konsole ausgeben, und nicht speichern. Daher brauchst du kein Array.
Achso ok und warum funktioniert der Command nicht? Weil habs jz reinkopiert und es kommt nichts zustande. Ich bin da halt noch ein Anfänger weil ich einfach zu spät immatrikuliert worden bin :(
Ja kannst du dann bei der Ergänzung nachschauen
Ein Java-Programm braucht immer eine Main-Methode.
Diese wird beim Programmstart aufgerufen.
Von dieser aus kannst du dann
chess(7);
oder so machen, um die Funktion aaufzurufen, die ich dir gegeben habe.
public static void main(String args[]) {
chess(3);
}
Ich hab nen Screenshot gemacht. Kannste ja mal nachgucken, also ich kann kein Java run starten
Fange zunächst am Besten mit einem Tutorial an. Auf Youtube oder so.
Das haben wir, aber ich glaube wie man an die Sache rangeht ist unser Problem
Sie sollen Arrays benutzen. Stimmt nicht, sie versuchen, ok