我正在创建一个骰子游戏,它将使用一个整数数组来存储在模具上滚动的值,并且具有允许用户滚动骰子的方法,找出在模具上滚动的所有值的总和等。
方法rollAndStore()滚动一次die并将该值存储在数组中。
在名为howMany()的方法中,参数:“value”将是1到6之间的整数。该方法用于计算当前存储在数组rollingValues []中的值在模具上滚动的次数。例如,如果用户输入的值为4,则该方法应计算在模具上滚动数字4的次数,然后将其与存储在数组中的值进行比较。我需要返回计算出的值。
到目前为止,我写道:
private int[] rolledValues;
private Die die;
public DiceGame(int arraySize)
{
rolledValues = new int[arraySize];
die = new Die();
}
public void rollAndStore(int roll1){
if (roll1 > rolledValues.length){
//Do Nothing
;
} else if (roll1 >= 0 && roll1 < rolledValues.length){
die.roll();
rolledValues[roll1] = die.roll();
}
}
public int howMany(int value){
if (value >= 1 && value <= 6){
for (int i = 0; i < rolledValues.length; i++){
}
}
return ;
}
我不确定在for循环中写什么来使这个工作。
答案 0 :(得分:0)
public int howMany(int value){
// i prefer checks at the beginnin with a return
if(value < 0) return -1;
if(value > 6) return -1;
int total = 0;
// loop over all rolled values (alternative form to classic for loop)
for(int rolledVal : rolledValues){
// check if rolled value equals given value
if(rolledVal == value){
// count it
total++;
}
}
return total;
}
答案 1 :(得分:0)
您可以切换到散列图以使搜索更简单
private HashMap<Integer,Integer> rolledValues = new HashMap<>();
private int index = 0;
public void rollAndStore(int roll1){
if (roll1 > index){
//Do Nothing
;
} else if (roll1 >= 0){
index += 1;
int rolledDie = die.roll();
int amount = rolledValues.get(rolledDie);
rolledValues.replace(rolledDie,amount+1);
}
}
private int howMany(int die){
return rolledValues.get(die);
}