Можно ли получить индекс 2D-массива? Предположим, у меня есть следующий массив

int[][] arr = {{41, 44, 51, 71, 63, 1}, {7, 88, 31, 95, 9, 6}, {88, 99, 6, 5, 77, 4}};

И я хочу получить индекс 88, как это сделать?

1
Ravi77 4 Мар 2012 в 16:50

3 ответа

Лучший ответ
for (int i = 0 ; i < size; i++)
    for(int j = 0 ; j < size ; j++)
    {
         if ( arr[i][j] == 88)
         {
              `save this 2 indexes`
              break;
         }
    }
3
Ofer 4 Мар 2012 в 12:57

Если они не отсортированы, вам придется перебрать все индексы [используя двойной цикл] и проверить, совпадают ли они.

int[][] arr = {{41, 44, 51, 71, 63, 1}, {7, 88, 31, 95, 9, 6}, {88, 99, 6, 5, 77, 4}};
for (int i = 0; i < arr.length; i++) { 
    for (int j = 0; j < arr[i].length; j++) { 
        if (arr[i][j] == 88) { 
            System.out.println("i=" + i + " j=" + j);
        }
    }
}

Приведет к:

i=1 j=1
i=2 j=0
3
amit 4 Мар 2012 в 12:52

Это примитивный массив, поэтому он должен быть напрямую доступен с помощью индекса:

int[] indexValue = arr[88];

РЕДАКТИРОВАТЬ:

Извините, читая его еще раз, если вы имеете в виду индексы элемента 88, то есть несколько вхождений 88, поэтому вам нужно будет перебирать каждый индекс и искать совпадение в каждом, а также иметь размер массивов, хранящихся где-то. Если это возможно и не влияет на производительность, используйте ArrayList или Vector и сохраните вместо них объекты Integer.

0
Aram Kocharyan 4 Мар 2012 в 12:53