在我的构造函数中为甲板创建算法

时间:2014-04-29 14:23:11

标签: java algorithm

学校的任务要求我创建一副牌,很快我们就会在甲板上做事,比如从中抽取各种各样的东西。我想使用ArrayList作为作业,但是第一次为deck创建构造函数时,它很长并且被抽出。卡片包含有颜色的卡片和每张卡片有两份副本的动物。有没有人有一个有效的算法来填充ArrayList?

编辑:我对缺乏细节表示歉意。基本上我们只需要创建一个带有一堆卡片的卡片,每张卡片都有颜色和动物。这里使用的颜色是红色,蓝色和黑色。这些动物是狮子,老虎和熊。这是我到目前为止所写的内容,但它只适用于数组,所以我必须为ArrayList调整它:

public Deck() {
    //fills with blank cards
    for (int i = 0; i < d.length; i++) {
        d[i] = new Card();
    }
    //adds color to cards first
    for (int i = 0; i <= 5; i++) {
        d[i].setColor("red");
    }
    for (int i = 6; i <= 11; i++) {
        d[i].setColor("blue");
    }
    for (int i = 12; i <= 17; i++) {
        d[i].setColor("black");
    }
    for (int i = 0; i < d.length; i++) {
        if ((d[i].getColor().equals("red")) && (i % 3 == 0)) {
            d[i].setAnimal("lion");
        } else if (d[i].getColor().equals("red") && (i % 3 == 1)) {
            d[i].setAnimal("tiger");
        } else if (d[i].getColor().equals("red") && (i % 3 == 2)) {
            d[i].setAnimal("bear");
        } else if (d[i].getColor().equals("blue") && (i % 3 == 0)) {
            d[i].setAnimal("lion");
        } else if (d[i].getColor().equals("blue") && (i % 3 == 1)) {
            d[i].setAnimal("tiger");
        } else if (d[i].getColor().equals("blue") && (i % 3 == 2)) {
            d[i].setAnimal("bear");
        } else if (d[i].getColor().equals("black") && (i % 3 == 0)) {
            d[i].setAnimal("lion");
        } else if (d[i].getColor().equals("black") && (i % 3 == 1)) {
            d[i].setAnimal("tiger");
        } else if (d[i].getColor().equals("black") && (i % 3 == 2)) {
            d[i].setAnimal("bear");
        }
    }

1 个答案:

答案 0 :(得分:-1)

不使用4个不同的循环,而是使用1个循环来设置颜色和动物。

您甚至可以使用单个循环并编写switch语句来设置颜色和动物。

List<Card> cards= new ArrayList<Card>();
for( int i=0; i < length; i++ ){
     Card = new Card();
     animal=i%3;
     switch(animal):
       //set the animal based on value of switch
      colour =i%4;
     swicth(colour)
       //set the colour of the card 

     cards.add(card);

}

此外,您的套牌对象应该参考卡片列表以及实现它所需的其他功能。 Deck对象不应该只是一个卡片列表。对于ex,你不应该创建

List<Card> Deck=new ArrayList<Card>();