приращение значений в массиве на основе другого массива - PullRequest
3 голосов
/ 13 января 2012

У меня есть двумерный массив 9 x 9 (twoArray), который заполнен числами от 1 до 17.
Я пытаюсь создать одномерный массив (oneArray), который предоставит мне вхождение чисел в twoArray.

т.е. если число «1» встречается «3» раз в twoArray, то значение в oneArray [0] будет «3», число «15» один раз, затем oneArray [14] будет «1» и т. д. У меня есть следующий код, который я написал, но я получаю «ArrayIndexOutOfBoundsException»

Не уверен, правильный ли мой код для этого. Любое руководство будет оценено. Я не ищу ответа, просто какой-то совет, чтобы я мог сделать это сам.

int[] oneArray= new int[17];
for (int i= 0; i< twoArray.length; i++)
{
    for (int j= 0; j< twoArray[j].length; j++) **// exception occurs here**
    {
        int num = 0;
        num = twoArray[i][j] - 1;
        oneArray[num] += 1;
    }
}

Ответы [ 2 ]

5 голосов
/ 13 января 2012

У вас есть опечатка: условие должно быть j< twoArray[i].length, а не j< twoArray[j].length.Остальная часть программы должна работать, но вы можете подумать об изменении пары действительно мелких вещей:

  • Рассмотрите возможность объединения инициализации num с ее вычислением
  • Рассмотрите возможность использования ++вместо += 1
4 голосов
/ 13 января 2012

Вам нужно

for (int j= 0; j< twoArray[i].length; j++)
                           ^--i here, and not j
...