Подсчет экземпляров значения в массиве - PullRequest
0 голосов
/ 20 марта 2012

Домашнее задание. Игра в кости. У меня есть массив, который представляет пять бросков кубика. Рассматривать: diceRoll[] = {6,3,3,4,5}. Мне бы хотелось создать ВТОРОЙ массив, в котором количество значений от одного до шести содержится в diceRoll[] (например, occurence[] = {0,0,2,1,1,1} для diceRoll[] выше), но я боюсь, что теряюсь во вложенных циклах и не могу понять, какое значение я ~ должен ~ возвращать. occurence[] - глобальная переменная, и намерение состоит в том, чтобы массив содержал шесть значений ... количество единиц (в индексе [0]), двое (в [1]), тройки (в [2]), и т.д.

Пока:

 for(i=1;i<7;i++)   /* die values 1 - 6
    {
       for(j=0;j<diceRoll.length;j++)  /* number of dice
       {
          if (diceRoll[j] == i)  /* increment occurences when die[j] equals 1, then 2, etc.
             occurence = occurence + 1;
       }
    }
    return occurence;
    }

Я не могу, однако, заставить работать вхождение = вхождение + 1. bad operand types for binary operator моя самая распространенная ошибка. Я подозреваю, что мне нужно увеличить occurence ВНЕ один или оба цикла for, но я потерялся.

Руководство? или, возможно, простой способ сделать это? д

1 Ответ

4 голосов
/ 20 марта 2012

Самый простой способ сделать это - создать второй массив так, чтобы вхождение [0] = # из 1 вхождение [1] = # из 2 и т. д. Тогда это становится методом 1 цикла.

//method to return number of occurrences of the numbers in diceRolls
int[] countOccurrences(int[] diceRolls) {
    int occurrence[] = new int[6]; //to hold the counts

    for(int i = 0; i < diceRolls.length; i++) { //Loop over the dice rolls array
       int value = diceRolls[i]; //Get the value of the next roll
       occurence[value]++; //Increment the value in the count array this is equivalent to occurrence[value] = occurrence[value] + 1;
       //occurrence[diceRolls[i]]++; I broke this into two lines for explanation purposes
    }

    return occurrence; //return the counts 
} 

EDIT:

Затем, чтобы получить счет для любого конкретного значения, используйте occurrence[value-1]

...