Базовый массив Java и для цикла - PullRequest
0 голосов
/ 25 августа 2018

Я беру Java-класс и много раз читаю одно и то же объяснение, и я просто хочу убедиться, что я правильно его понимаю.

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

Фрагмент кода, в котором я не уверен, таков:

for(int roll = 1; roll < 1000; roll++){
    ++freq[1+rand.nextInt(6)];
}

Я понимаю эту часть: 1+rand.nextInt(6)

Но я не понимаю эту часть: ++freq и как он подсчитывает результаты

Я понимаю это как (с примером, который я бросил 4):

for(int roll = 1; roll < 1000; roll++){
    ++freq[4];
    //all indexes in freq are == 0 to start
    //freq[4] is index 4 in the array. It was 0 but is now == to 1
    //freq[0], freq[1], freq[2], freq[3], freq[5], and freq[6] are all still == to 0
}

for(int roll = 1; roll < 1000; roll++){
    ++freq[6];
    //freq[6] is index 6 in the array. It was 0 but is now == to 1
    //freq[0], freq[1], freq[2], freq[3], and freq[5] are all still == to 0
    //freq[4] and freq[6] are both == to 1
}

Это правильно?

1 Ответ

0 голосов
/ 25 августа 2018
int[] freq = new int[7];

    for(int roll = 1; roll < 1000; roll++){
        ++freq[1+rand.nextInt(6)];
    }

В приведенном выше коде rand.nextInt(6) возвращает значение от 0 до 5, которое используется для доступа к соответствующему целочисленному значению массива freq

++freq часть увеличивает целое значение, к которому осуществляется доступ, на 1.

Пример: если rand.nextInt(6) возвращает 2,

freq[1 + 2] = freq[1 + 2] + 1;

Однако, начиная с 1 + rand.nextInt(6), 0 никогда не создается. Поэтому первый элемент массива freq следует игнорировать.

freq[n] даст вам частоту nth лица.

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