插入替换数组中的其他插入-Java

时间:2018-10-04 10:25:21

标签: java arrays switch-statement

我正在尝试制作一个国际象棋棋盘,当我尝试插入一块棋子时,之前插入的棋子将替换为新插入的棋子。

例如,如果我插入一个塔然后插入一匹马,则该塔会变成一匹马。 (我看不到错误)。

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 :(得分:2)

我认为PiezasTipo.TORRE在您的预期输出中转换为PiezasTipo.CABALLO的原因(或至少原因之一)是由于{{ 1}}块。如果没有break;语句,则在执行完case代码块后,它将继续进入break块。

Here is a link for a more thorough overview of the switch statement