Mein vorgegebener Code der Klasse Board (die aufgabe behandel das n-Damen Problem auf einem Schachbrett) mit der öffentlichen Konstruktor "public Board" dem ein integer übergeben wird ruft den privaten Konstruktor "private Board" mit den werten (0, übergebener Integer) auf. Es wird ein Feld der länge 0 erzeugt (das in der Klasse als final deklariert ist).
Ich soll jetzt eine Methode schreiben, die das board um eine spalte erweitert (siehe newColumn(int rowPosOfQueen)) aber mein versuch mit dem Befehl
Board newBoard = new Board(length + 1, numberOfRows);
schlägt fehl, da ich so kein neues feld board der länge length + 1 erzeuge.
Wie kann ich denn hier ohne die variablen deklaration FINAL zu ändern jeweils ein board der länge length+1 erzeugen ???
Vielen Dank für die Hilfe
Johannes
Ich soll jetzt eine Methode schreiben, die das board um eine spalte erweitert (siehe newColumn(int rowPosOfQueen)) aber mein versuch mit dem Befehl
Board newBoard = new Board(length + 1, numberOfRows);
schlägt fehl, da ich so kein neues feld board der länge length + 1 erzeuge.
Wie kann ich denn hier ohne die variablen deklaration FINAL zu ändern jeweils ein board der länge length+1 erzeugen ???
Java:
/** Zeile 2 - 17 sind so vorgegeben und dürfen NICHT verändert werden */
public class Board {
private final int[] board;
private final int numberOfRows;
public Board(int numberOfRows) {
this(0, numberOfRows);
}
private Board(int numberOfColumns, int numberOfRows) {
this.board = new int[numberOfColumns];
this.numberOfRows = numberOfRows;
}
public int getNumberOfColumns() {
return board.length;
}
public Board newColumn(int rowPosOfQueen) {
int length = getNumberOfColumns();
int[] temp = new int[length];
System.arraycopy(board, 0, temp, 0, length);
Board newBoard = new Board(length + 1, numberOfRows);
System.arraycopy(temp, 0, board, 0, length);
board[length + 1] = rowPosOfQueen;
return newBoard;
}
Vielen Dank für die Hilfe
Johannes