根据其他值向数组添加值

时间:2019-08-26 10:04:41

标签: java arrays

我目前正在研究一个程序,在该程序中掷骰子,然后根据结果可以选择一些分数(x3,x4等),并且需要某种方法来检查每个值掷出了多少骰子(有总共5个骰子)。因此,基本上,我需要为每个值使用1:0倍,2:2倍,3:1倍等等。问题是我不想为每个值编写20行代码,所以我尝试使用数组,但是结果似乎是随机的。下面是我的代码


int[] a = new int[6];


        for(int i = 0; i<dice.size();i++){
            if(dice.get(i).getValue() == 1){
                a[0]++;
            }
            if(dice.get(i).getValue() == 2){
                a[1]++;
            }
            if(dice.get(i).getValue() == 3){
                a[2]++;
            }
            if(dice.get(i).getValue() == 4){
                a[3]++;
            }
            if(dice.get(i).getValue() == 5){
                a[4]++;
            }
            if(dice.get(i).getValue() == 6){
                a[5]++;
            }
        }
        for(int i : a ){
            System.out.println(a[i]);
        }

在此处设置骰子值:

for (int i = 0; i < 5; i++) {
            random = (int) (Math.random() * 6) + 1;
            dice.get(i).setValue(random);

例如,当我滚动并获得骰子:1、3、4、4、6时,程序将打印: 0 1个 0 1个 1个 0  好像有一个2,一个4和一个5。

1 个答案:

答案 0 :(得分:0)

可以通过简单地从值中减去1来获得要递增的数组元素的索引来缩短第一个循环(假设列表元素的类型为Die

for (Die d : dice) {
    a[d.getValue()-1]++;
}

第二个循环是错误的,因为您使用数组元素的值从数组中检索元素。等效的非增强的for循环如下:

for (int index = 0; index < a.length; index++) {
    System.out.println(a[a[index]]);
}

第二个数组访问导致的结果与预期的结果不同。您需要重写循环以获得预期的结果:

for(int count : a) {
    System.out.println(count);
}