在Array和ArrayList java中滚动一个die的集合

时间:2014-12-07 00:51:56

标签: java arrays arraylist dice

这里有点问题......

•我创建了一个数组和一个可以存储10个Die对象的独立ArrayList对象。

•我创建了Die对象并将它们添加到数组中,然后创建了Die对象并将它们添加到ArrayList对象中。

•我显示了数组和ArrayList的所有元素。

现在我正在尝试做两件事:

•滚动数组和ArrayList中的每个Die对象

•通过将每个骰子中的点相加来计算每个集合的总值,并确定哪个更大并显示这些结果

有关如何实现上述两项内容的想法吗?

骰子对象

public class Dice {

String name;
int[] values;

        // constructor 
        public Dice(int faces,String name){
            int[] values =new int[faces];
            for (int i=0;i<faces;i++){
                values[i]=i+1;
            }
            this.name=name;
            this.values=values;
        }
}

**

import java.util.ArrayList;

public class Main {

    public static void main(String[] args) {

        final int SIZE = 10;
        Dice[] diceList = new Dice[SIZE];
        ArrayList<Dice> diceList2 = new ArrayList<Dice>();

        //create 10 die

        for (int i=0;i<SIZE;i++){
            String name = "dice"+ Integer.toString(i+1);
            Dice dice = new Dice(6,name);
            diceList2.add(dice);
            System.out.println(dice.name);


        }
        System.out.println();

        for (int i = 0; i<SIZE; i++) {
            String name = "dice"+ Integer.toString(i+1);
            Dice dice = new Dice(6,name);
            diceList[i] = dice;
            System.out.println(dice.name);


        }
    }
}

1 个答案:

答案 0 :(得分:1)

为了掷骰子我会假设你会使用像Random()这样的东西。

public class Dice {
    private String name;
    private int[] values;
    private int rolledValue;
    private java.util.Random random = new java.util.Random();

    // constructor 
    public Dice(int faces,String name){
        int[] values =new int[faces];
        for (int i=0;i<faces;i++){
            values[i]=i+1;
        }
        this.name=name;
        this.values=values;
    }

    public void rollDie() {
        rolledValue = values[random.nextInt(values.length)];
    }

    public int getRolledValue() {
        return rolledValue;
    }
}

然后循环遍历数组或ArrayList是微不足道的:(请注意,我自己只使用1个模具,只需调用相同的模具进行多次滚动。

int total = 0;
for (int i = 0; i < diceList.length; ++i) {
     diceList[i].rollDie();
     total+= diceList[i].getRolledValue();
}

int total2 = 0;
for (Dice die : diceList2) {
    die.rollDie();
    total2 += die.getRolledValue();
}

然而,正如我所说,我不同地使用骰子类:

public class Dice {
    private final int[] faces;
    private java.util.Random random = new java.util.Random();
    public Dice(final int[] faces) {
        this.faces = faces;
    }
    public int getNextRoll() {
        return faces[random.nextInt(faces.length)];
    }
}

滚动它们:

Dice d6 = new Dice(new int[] { 1, 2, 3, 4, 5, 6 };
Dice d4 = new Dice(new int[] { 1, 2, 3, 4},
int total1 = 0;
int total2 = 0;
for (int i = 0; i < 10; ++i) {
    total1 += d6.getNextRoll();
    total2 += d4.getNextRoll();
}

但我承认这并不能帮助你玩数组:)