Как будет работать вложенный массив в цикле - PullRequest
0 голосов
/ 26 мая 2018

Я пытаюсь понять работу этого массива в цикле

for (int answer=0; answer<responses.length; answer++)
{
++frequency[responses[answer]]
}

Частота - это массив, инициализированный при запуске как

int [] frequency = new int [6];

У нас также есть ответы в виде массива, имеющегозначения int[] responses= {1,2,3,4,4,4,4,4}

Я не понимаю, как этот ++frequency[responses[answer]] работает, мне кажется, что это вложенный массив, но как он будет работать?

Ответы [ 2 ]

0 голосов
/ 26 мая 2018

Экспресс

++frequency[responses[answer]]

точно такой же, как если бы он был написан

int fi = responses[answer];
++frequency[fi];

frequency имеет шесть элементов, и все записи в responses действительныиндексы для массива из шести элементов.answers имеет восемь элементов, поэтому, если answer находится между 0 и 7, все будет работать.

0 голосов
/ 26 мая 2018

Нет вложенных массивов.Вы просто вкладываете два синтаксиса доступа к массиву.

Чтобы объяснить этот код, сначала нам нужно узнать, как изменится переменная answer.Из заголовка цикла for видно, что он начинается с 0 и продолжается до responses.length - 1, то есть до 8. Теперь мы можем оценить выражение frequency[responses[answer]]:

// in each iteration of the loop
frequency[responses[0]]
frequency[responses[1]]
frequency[responses[2]]
frequency[responses[3]]
frequency[responses[4]]
frequency[responses[5]]
frequency[responses[6]]
frequency[responses[7]]

Теперьмы можем оценить часть responses[x].Нам просто нужно найти соответствующий ответ в массиве responses.responses[0] - это первый элемент, который является 1.

frequency[1]
frequency[2]
frequency[3]
frequency[4]
frequency[4]
frequency[4]
frequency[4]
frequency[4]

. Этот оператор также включает оператор ++, который увеличивает этот конкретный индекс на frequency на 1. Таким образом, все вышеперечисленноеиндексы будут увеличиваться на 1 один за другим, поэтому массив frequency будет выглядеть следующим образом:

[0, 1, 1, 1, 5, 0]

На более высоком уровне абстракции этот код считает, сколько раз конкретный ответ появляется в *Массив 1022 *.Например, 4 появилось 5 раз.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...