Schachbrett programmieren

DonnyDarko

Newbie
Registriert
Juli 2017
Beiträge
4
Hallo, ich bin noch ziemlicher Anfänger im Programmieren. Für meine Hausarbeit muss ich einen Schachbrett programmieren, die anstatt weisse und schwarze Felder, + und - ausgeben soll. Soweit hab ich es geschafft. Die nächste Aufgabe beinhaltet, dass ich per Zeilenkommandoparameter die Koordinaten für ein "X" auf das Schachfeld platzieren soll. Das hab ich irgendwie auch hinbekommen. Mein Problem ist jetzt, dass das Programm auch mit einem Zeilenkommandoparameter, quasi ohne die Koordinaten ausgegeben werden soll und da kommt bei mir ständig der Fehler, dass er die anderen Parameter erwartet "Exception in thread
"main" java.lang.ArrayIndexOutOfBoundsException: 1
at Chessboard.main(Chessboard.java:4)"

Was müsste ich umschreiben, damit 1 Zeilenkommandoparameter akzeptiert wird, 3 aber optional sind.
Hier mein Code diesbezüglich (entschuldigt mein Chaos, aber ich bin wie gesagt noch Anfänger!):

class Chessboard {
public static void main(String[] args) {
final int x = Integer.parseInt(args[0]);
final int y = Integer.parseInt(args[1]);
final int z = Integer.parseInt(args[2]);
int runter = 1;
int quer;

while (runter <= x) {
quer = 1;
while (quer <= x) {
if ((args.length == 3) && (runter == y && quer == z) && (y <= x) && (z <= x)) { //Koordinaten für das X
System.out.print (" x ");
}
else if ((runter + quer) % 2 != 0) { // + oder - Feld
System.out.print(" - ");
} else {
System.out.print(" + ");
}
quer++;
}
runter++;
System.out.print("\n");
}
}
}
 
Zuletzt bearbeitet:
Wenn eine verschiedene Anzahl von Parametern möglich ist, musst Du diese Möglichkeit im Code entsprechend berücksichtigen. Momentan werden drei Parameter fix abgefragt. Üblicherweise arbeitet man die Parameter in einer Schleife dynamisch ab. Je nach Position und Anzahl der eingegebenen Parameter, bestimmst Du dann welcher gerade dran ist.

Falls das eine Option ist: es gibt tolle Bibliotheken für Kommandozeilenparameter (JCommander, Picocli etc.).


BTW: Es empfiehlt sich die "Code Einfügen"-Tags zu verwenden.
 
vielen Dank, hab das Problem lösen können. Ich wusste nicht, dass die Reihenfolge vom Parsen so wichtig ist. Vielen Dank!
 
Nicht die Reihenfolge war das Problem, sondern das Parameter-Array hat je nach Aufruf eine unterschiedliche Länge. Dein Code ging aber immer von drei Parametern aus. Wenn dann versucht wird auf ein zweites Array-Element zuzugreifen, wenn nur ein Element vorhanden ist, geht das natürlich schief.
 
Zurück
Oben