1

我有一个简短的代码,我似乎无法弄清楚。我遇到的最大问题是我不理解错误并且似乎找不到如何更改数组的类型。

int [][] spawnLocatiesCoins = new int [20][2];


void collectenVanCoins () {
  if (gameState == 1) {
    for (int i = 0; i<10; i++) {
      if (key == 's' && dist(spawnLocatiesCoins[i][0], spawnLocatiesCoins[i][1], xPosPlayer1, yPosPlayer1) < 20) {
        println("catch" + i);
        score++;
        spawnLocatiesCoins.splice(i, 1);
      }
    }
  }
}

想要做的是spawnLocationsCoins[i]从我的阵列中删除。我在这里得到的错误信息是Cannot invoke splice(int, int) on the array type int[][]。我已经为拼接方法尝试了几种不同的方法。我也尝试过使用remove没有结果的方法。

有人可以向我解释如何从int [][]数组中删除一个项目。

4

1 回答 1

2

您可能正在尝试使用处理拼接函数,但是,它不能满足您的要求(“将一个值或一个值数组插入现有数组”)。

我会说你最好使用ArrayList而不是数组,然后你可以像这样使用.remove函数:

list.remove(index);

因为要存储 2 个值(x 和 y),所以可以创建一个 int 数组的 ArrayList

ArrayList<int[]> spawnLocatiesCoins = new ArrayList<int[]>();

您可以像这样添加值:

spawnLocatiesCoins.add(new int[]{x_value, y_value});

并像这样访问它们:

spawnLocatiesCoins.get(index)[index_in_the_array];

您也可以使用PVectors(可以存储 2/3 值的变量(取决于您是否正在制作 3D 程序))而不是数组,但此时您可能不需要它们。

于 2019-10-15T08:05:21.913 回答