-2

私はこの yahtzee プロジェクトに取り組んでいて、問題に遭遇しました。dice_number 配列は、ランダムに生成された値を取得していないようです。oneScore TextView は常に「--」を表示します。私は自分のコードを投稿しています。助けてくれてありがとう。また、コードをもう見る必要がある場合はお知らせください。

 switch (v.getId()) {
       case R.id.rollBtn:
           for(i = 0; i < 5; i++){
               randnum = random.nextInt(5);
               if(i == 0){
                   images[i].setImageResource(image_array[randnum]);
                   dice_number[i] = randnum;
               }
               else if(i == 1){
                   images[i].setImageResource(image_array[randnum]);
                   dice_number[i] = randnum;
               }
               else if(i == 2){
                   images[i].setImageResource(image_array[randnum]);
                   dice_number[i] = randnum;
               }
               else if(i == 3){
                   images[i].setImageResource(image_array[randnum]);
                   dice_number[i] = randnum;
               }
               else if(i == 4){
                   images[i].setImageResource(image_array[randnum]);
                   dice_number[i] = randnum;
               }
               else if(i == 5){
                   images[i].setImageResource(image_array[randnum]);
                   dice_number[i] = randnum;
               }
               }
           break;
       case R.id.onesBtn:
           for (i = 0; i < 5; i++)
           {
               if (dice_number[i] == 1) {
                   dice_count[0] += 1;
                   oneScore.setText(Integer.toString(dice_count[0]));
               }
                   else 
                       oneScore.setText("--");
           }
4

2 に答える 2

1

その 2 番目の for ループは、各数値のテキストを再設定します。したがって、配列がある場合

dice_number = {3, 2, 1, 1, 4}

は、次に、次に( 0 の場合)、次に、次ににTextView設定されるため、最後の であるからの結果だけが表示されます。----1dice_count[0]2--dice_number[4]--

TextViews最後の要素だけでなく、配列全体を表示するには、文字列を作成するか、複数を使用する必要があります。

また、最初の for ループの if ステートメントは、私が知る限り何もしていません。

于 2012-04-19T17:53:44.603 に答える
1

答えではなく、提案されたリファクタリングです:

case R.id.rollBtn:
           for(i = 0; i < 5; i++){
               randnum = random.nextInt(5);
               images[i].setImageResource(image_array[randnum]);
               dice_number[i] = randnum; 
             }
           break;

実際、 の値は常に 0、1、2、3、または 4であるため、このコードにはif(i == 5) {..}決して到達しません。i

于 2012-04-19T17:54:58.610 に答える