Java - изменить массив - PullRequest
       4

Java - изменить массив

1 голос
/ 14 июля 2010

ОК, допустим, у меня есть этот массив:

public int[][] loadBoard(int map) {

    if (map == 1) {  return new int[][] { 
{2,2,24,24,24,24,24,1,3,0,0,0,1 },  {
2,2,24,23,23,23,24,1,3,0,0,0,1 },  {
1,1,24,23,23,23,24,1,3,3,3,3,1 },  {
1,1,24,24,23,24,24,1,1,1,1,3,1 },  {
1,1,1,1,7,1,1,1,1,1,1,3,1 },  {
6,1,1,1,7,7,7,7,7,1,1,1,1 },  {
6,3,3,1,3,3,3,1,7,7,7,3,1 },  {
6,72,3,3,3,1,1,1,1,7,7,1,1 },  {
3,3,3,3,1,1,1,1,1,1,7,1,1 } };  } }
return board;

, и я могу назвать его следующим образом:

board = loadBoard(1);

Но ... допустим, я хочу изменить число 72на карте 1 массив (слева внизу в массиве) с номером ... 21. Можете ли вы сделать это?

Ответы [ 2 ]

9 голосов
/ 14 июля 2010
board[7][1] = 21;

Объяснение: При работе с массивом a[], a[n] ссылается на (n + 1) -й элемент (учитывая, что первый элемент - a[0].

Многомерный массив - это просто массив массивов, поэтому если у вас есть двумерный массив b[][], то b[n] ссылается на (n + 1) -й массив .

Ваше значение 72 находится в восьмом массиве (индекс 7), на второй позиции (индекс 1), поэтому board[7][1] ссылается на это значение, а board[7][1] = 21 присваивает ему значение 21.

В сторону: Иногда (как правило, даже) вы не знаете, когда пишете код, с индексами которого вы хотите работать (скажем, вы хотите сделать это обобщенно для всех карт). Этот код найдет все вхождений 72 и заменить их на 21:

int numToReplace = 72;
int replacement = 21;
//loop through each nested array
for ( int i = 0; i < board.length; i++ ) { 
   //loop through each element of the nested array 
   for ( int j = 0; j < board[i].length; j++ ) { 
      if ( board[i][j] == numToReplace ) {
         board[i][j] = replacement;
      }
   }
}
2 голосов
/ 14 июля 2010

Когда вы объявляете массив наподобие int [] [], вы используете два индекса для идентификации одного значения в двумерном массиве.

При инициализации, например

int[][] myarray   = {
 { a,b,c,d,... },  // 0
 { a,b,c,d,... },  // 1
 { a,b,c,d,....}   // 2
};

Первый индекс выбирает один из вложенных массивов.(0, 1 или 2) в примере.Затем второй индекс выбирает элемент из вложенного массива, a, b, c, d ... выше.

Индексы всегда начинаются с 0: myarray [0] [0] дает значение, сохраненное в массиве0, позиция а.myarray [1] [3] дает значение 'd' из вложенного массива 1.

В вашем примере число 72 было в восьмом массиве, вторая позиция, считая с использованием натуральных чисел (от 1).Но так как индексы начинаются с 0, это становится индексом [7] [1].Какой ответ.

board[7][1] = 72;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...