Unsere Aufgabenstellung: Schreiben Sie ein Programm Chessboard das eine ganze Zahlen als Kommandozeilenparameter akzeptiert und ein Schachbrett dieser Größe ausgibt.
Statt der Farben Weiß und Schwarz verwenden Sie die Symbole - und +. Das erste ausgegebene Symbol muss ein - sein.
Die Symbole wechseln dann jeweils ab, so dass nie zwei gleiche Symbole direkt neben- oder untereinander stehen. Geben Sie nach jedem Symbol außer dem letzten in einer Zeile ein Leerzeichen aus.
Weiterhin sollen wir nur while-Schleifen verwenden...
Einige Ansatzvorschläge währen sehr hilfreich....vielen Dank im Voraus
Da es das ganze quadratisch werden soll, brauchst du zwei verschachtelte Schleifen. Am einfachsten ginge es mit for-Schleifen, aber da while Pflicht ist, musst du sie nachbilden.
Java:
int i=0;while(i<size){//...
i++;}
Bei der Ausgabe sollten dir der Modulo und der EX-OR Operator ein Hilfe sein. Wenn beide für dir nur Bahnhof sagen, setzt es mit zwei boolean Flags um. Eins für das Zeichen am Zeilenanfang und eins für das aktuelle. Nach einem Durchlauf der inneren bzw. äußeren Schleife dann das entsprechende Flag einfach negieren.
Ich sehe mein Tipp wurde nochmal gegeben, es geht auch mit einer Schleife, die zwei sind nicht nötig, machen es aber einfacher ;-)
Und man muss dran denken, das bei Zeile eins mit
Code:
-
aber bei Zeile zwei dann mit
Code:
+
begonnen werden muss, nur so als tipp, bei der zwei schleifen variante kam ja schon der Tip mit dem
Wenn du mit der Aufgabe schon Probleme hast dann schau dir mal die Aufgabe mit den ChristmasTree an
Hier mein Code zur Lösung. Leider gibt er auch als letztes Zeichen jeder Reihe noch ein zusätzliches Leerzeichen aus.
Java:
publicclassChessboard{publicstaticvoidmain(String[] args){int a =Integer.parseInt(args[0]);int b =Integer.parseInt(args[0]);int k =1;int i =1;while(k <= b){
k++;
i =1;while(i <= a){
i++;if((i + k)%2!=0)System.out.print("+");elseSystem.out.print("-");System.out.print(" ");}System.out.print("\n");}}}
So ich glaub jetzt habe ich es mit Zusatzaufgabe hin bekommen
Java:
publicclassChessboard{publicstaticvoidmain(String[] args){int a =Integer.parseInt(args[0]);int x =Integer.parseInt(args[1]);int y =Integer.parseInt(args[2]);int b = a;int k =1;int i =1;while(k <= b){
k++;
i =1;while(i <= a){
i++;if(i-1== x && k-1== y)System.out.print("X");elseif((i + k)%2!=0)System.out.print("+");elseSystem.out.print("-");if(i <= a)System.out.print(" ");}System.out.print("\n");}}}
Ist aber sicherlich nicht der Königsweg, vllt. könnte man hier auch mit Arrays arbeiten. Was meint Ihr dazu?
Wenn man ein Schachspiel programmieren sollte würde ich dir Recht geben. So halte ich das für mit Kanonen auf Spatzen schießen. Es geht ohne wesentlich leichter.
Da er das nicht ohne Weiteres hin bekommt, ist das ne gute Übung für den Umgang mit mehrdimensionalen Arrays. Klar gehts auch einfacher, so wie fast alles, was man am Anfang vom Programmieren-Lernen macht