-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

第二个 for 循环为每个数字重新设置文本。所以如果你有一个数组

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

TextView被设置为--, then --, then 1(如果dice_count[0]是 0), then 2, then --,所以您将看到的只是 的结果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;

if(i == 5) {..}事实上,永远不会到达那段代码,因为 的值i始终是 0、1、2、3 或 4。

于 2012-04-19T17:54:58.610 回答