Вставки заменяют другие вставки в массиве - Java - PullRequest
0 голосов
/ 04 октября 2018

Я пытаюсь сделать шахматную доску, и когда я пытаюсь вставить фигуру, вставленные ранее фигуры заменяются вставленной новой.

Например, если я вставлю башню, а затем вставлюлошадь, башня превращается в лошадь.(Я не вижу ошибки).

public Board() {
    this.board = new Position[row][columns];
}

for (int i = 0; i <= 1; i++) {
    for (int j = 0; j <= 3; j++) {
        if (i == 0) {
             switch (j) {
                 case 0 : pieza0 = new Pieza (PiezasTipo.TORRE,PiezasColor.NEGRO);
                          pieza0.setId();
                          this.tablero[i][j].setPieza(pieza0);

                          pieza0 = new Pieza(PiezasTipo.TORRE, PiezasColor.NEGRO);
                          pieza0.setId();
                          this.tablero[i][fila-j].setPieza(pieza0);

                          pieza0 = new Pieza(PiezasTipo.TORRE, PiezasColor.BLANCO);
                          pieza0.setId();
                          this.tablero[columna-i][j].setPieza(pieza0);

                          pieza0 = new Pieza(PiezasTipo.TORRE, PiezasColor.BLANCO);
                          pieza0.setId();
                          this.tablero[columna-i][fila-j].setPieza(pieza0);

                  case 1 : pieza0 = new Pieza(PiezasTipo.CABALLO, PiezasColor.NEGRO);
                           pieza0.setId();
                           this.tablero[i][j].setPieza(pieza0);

                           pieza0 = new Pieza(PiezasTipo.CABALLO, PiezasColor.NEGRO);
                           pieza0.setId();
                           this.tablero[i][fila-j].setPieza(pieza0);

                           pieza0 = new Pieza(PiezasTipo.CABALLO, PiezasColor.BLANCO);
                           pieza0.setId();
                           this.tablero[columna-i][j].setPieza(pieza0);

                           pieza0 = new Pieza(PiezasTipo.CABALLO, PiezasColor.BLANCO);
                           pieza0.setId();
                           this.tablero[columna-i][fila-j].setPieza(pieza0);

Я вставляю все башни (4: две черные и две белые), а затем вставленные лошади и башни превращаются в лошадей.Это проблема экземпляра или все части имеют одинаковое направление памяти?Я не знаю.

1 Ответ

0 голосов
/ 04 октября 2018

Я думаю, что (или хотя бы одна из) причина, по которой PiezasTipo.TORRE преобразуется в PiezasTipo.CABALLO в ожидаемом выходе, связана с отсутствующим оператором break; в блоке case.Если оператор break отсутствует, после выполнения блока кода case 0 он перейдет в блок case 1.

Ссылка для более подробного обзораоператора switch .

...