【问题标题】:Insertions replace other insertions in array - Java插入替换数组中的其他插入 - Java
【发布时间】:2018-10-04 10:25:21
【问题描述】:

我正在尝试制作一个棋盘,当我尝试插入一个棋子时,之前插入的棋子会被新插入的棋子替换。

例如,如果我插入一座塔,然后再插入一匹马,那么这座塔就会变成一匹马。 (我看不到错误)。

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:两个黑色和两个白色),然后插入的马和塔变成马。这是一个实例问题还是所有部分都具有相同的内存方向?我不知道。

【问题讨论】:

  • 我在您发布的代码中没有看到任何 columna 和 fila 但我认为因为您使用数组,如果您使用 [] 获取数组中的位置,如果您更改它,更改将替换该位置的旧值。没有插入内置数组(我的意思是位置 [] [])发生。您必须使用新的数组副本自行完成,或者如果您喜欢插入,则可以使用 ArrayList 之类的东西。 (ArrayList 还有很多其他功能。
  • 我认为问题在于您将人物插入同一个地方,但如果它是高耸的,则应将其放置在马附近而不是马身上。此外,您可以添加一个方法来检查该位置是否有图形,如果是这样,您不应该在那里放置一个新图形

标签: java arrays switch-statement


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-10-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多