Невозможно вызвать соединение (int, int) для массива типа int [] [] - PullRequest
1 голос
/ 14 октября 2019

У меня есть короткий код, который я не могу понять. Самая большая проблема, с которой я столкнулся, заключается в том, что я не понимаю ошибку и, похоже, не могу понять, как мне изменить тип моего массива.

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 [][].

1 Ответ

2 голосов
/ 15 октября 2019

Вы, вероятно, пытаетесь использовать функцию Processing splice , однако она не выполняет то, что вы хотите («Вставляет значение или массив значений в существующий массив»).

Я бы сказал, что лучше использовать ArrayList вместо массива, где вы можете просто использовать функцию .remove , например:

list.remove(index);

Поскольку вы хотите сохранить 2 значения (x и y), вы можете создать ArrayList из массивов int

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-программу)) вместо массивов, ноВы, вероятно, не нуждаетесь в них на данный момент.

...