gpt4 book ai didi

Java 程序的迭代次数超出了需要?

转载 作者:行者123 更新时间:2023-12-02 13:16:24 24 4
gpt4 key购买 nike

我不确定我是否问了正确的问题,但这是我能想到的最接近的问题。不管怎样,我正在尝试制作一个简化版的纸牌游戏,称为 Elevens。在编译阶段一切似乎都很好,但是当它运行时,它并没有按预期工作。以下是与该问题相关的 DeckDeckTester 类的方法:

注意:我省略了标题和内容

Deck 类构造函数和方法之一:

public Deck(String[] suits, String[] ranks, int[] values){
ArrayList<Card> cardslist = new ArrayList<Card>();
for(String suit: suits){
for(String rank: ranks){
for(int value: values){
cardslist.add(new Card(suit, rank, value));
}
}
}
size=cardslist.size();
cards=cardslist;
}

public List<Card> getDeck(){
return cards;
}

DeckTester主要方法:

public static void main(String[] args){
String[] suitsA={"Clubs", "Diamonds", "Hearts", "Spades"};
String[] ranksA={"Ace", "Two", "Three", "Four", "Five", "Six", "Seven", "Eight", "Nine", "Ten", "Jack", "Queen", "King"};
int[] valuesA={1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13};
String[] suitsB={"Lions", "Giraffes", "Wolves"};
String[] ranksB={"One", "Two", "Three"};
int[] valuesB={1, 2, 3};
Deck a = new Deck(suitsA, ranksA, valuesA);
Deck b = new Deck(suitsB, ranksB, valuesB);
System.out.println(a.getDeck());
System.out.println(b.getDeck());
}

这会产生一个数组的结果,例如{梅花A(分值:1)...梅花A(分值:13),梅花二(分值:1)等}

我希望它能像一副标准的纸牌一样生成。

最佳答案

您有三个嵌套的 for 循环,因此您将制作 suits*ranks*values 张牌,而您只想制作 suits*ranks 张牌。因此:

public Deck(String[] suits, String[] ranks, int[] values){
ArrayList<Card> cardslist = new ArrayList<Card>();
for(String suit: suits) {
for(int i = 0; i < ranks.length; i++) {
cardslist.add(new Card(suit, ranks[i], values[i]));
}
}
size=cardslist.size();
cards=cardslist;
}

public List<Card> getDeck(){
return cards;
}

请记住,当您传递排名和值时,必须使它们按顺序对应,以正确分配它们并确保它们的长度相同。您可能需要为此添加防护。

希望这有帮助!

关于Java 程序的迭代次数超出了需要?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43748359/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com