0

在家工作。骰子游戏。我有一个代表五卷骰子的数组。考虑: diceRoll[] = {6,3,3,4,5}。我想创建一个 SECOND 数组,其中包含从 1 到 6 的值的计数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;
    }

但是,我无法让occurence=occurence+1 起作用。bad operand types for binary operator是我最常见的错误。我怀疑我需要在occurence外部增加一个或两个 for 循环,但我迷路了。

指导?或者也许是一条简单的方法来做到这一点?d

4

1 回答 1

4

我必须这样做的最简单方法是按顺序创建第二个数组,以便发生 [0] = # of 1'soccurrence[1] = # of 2's 等等。然后这变成了一个 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 
} 

编辑:

然后获取任何特定值使用的计数occurrence[value-1]

于 2012-03-20T00:31:56.367 回答