学校的任务要求我创建一副牌,很快我们就会在甲板上做事,比如从中抽取各种各样的东西。我想使用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");
}
}
答案 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>();