比较数组

时间:2017-11-12 23:31:36

标签: java arrays if-statement parameters

我正在创建一个骰子游戏,它将使用一个整数数组来存储在模具上滚动的值,并且具有允许用户滚动骰子的方法,找出在模具上滚动的所有值的总和等。

方法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循环中写什么来使这个工作。

2 个答案:

答案 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);
}