【问题标题】:How can I split a deck of 52 cards into 4 hands of 13 in Java?如何在 Java 中将一副 52 张牌分成 4 手牌,每手牌 13 张牌?
【发布时间】:2020-11-19 11:37:18
【问题描述】:

对于这个项目,我们不能使用任何集合类。我尝试使用循环创建 4 个数组,每个数组包含 13 张卡片,以便以后可以对它们进行排序并呈现给用户。我不知道如何用卡片组中的卡片填充 4 个数组

我的交易方式:

public void deal() {
        for (int i = 0; i < 4; i++) {
            Card[] hand = new Card[13];
            for (int j = 0; j < 13; j++) {
                hand[j] = deckOfCards[j];
                j++;
            }
        }
    }

【问题讨论】:

  • 创建一个包含 52 张卡片的数组,将其洗牌,创建 4 个包含 13 个元素的数组,然后从牌组顶部(大小为 52 的数组)挑选卡片。
  • 我已经创建了套牌并有洗牌方法,我无法弄清楚最后一部分
  • 你应该反转你写的循环,按照目前的逻辑,你正在向一个人发 13 张牌,然后继续下一张,而不是:让 i 循环 13 次,然后j 仅循环 4 次。这就像给一个人一张卡片,分开 13 次。

标签: java arrays loops


【解决方案1】:

看来你犯了一个逻辑错误。让我们试一试。外循环运行 4 次。

    for (int i = 0; i < 4; i++)

每次都会创建一个新的 Card 类型的数组手。

    Card[] hand = new Card[13];

接下来我们转到 j 循环,该循环对于从 0 到 3 的 i 的每个值运行 13 次,

    for (int j = 0; j < 13; j++)

现在里面的元素都存放在数组hand中了。

     //Logical error
     hand[j] = deckOfCards[j];

现在每次在手牌数组中,只使用deckOfCards 的前13 个元素。 您没有访问数组 deckOfCards 的 13-51 中的元素。为此,请尝试将这部分代码更改为此。

    hand[j] = deckOfCards[j + i*13];

这使得deckOfCard 的所有元素都可以访问。

希望对你有所帮助。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-03-05
    • 1970-01-01
    • 1970-01-01
    • 2014-12-21
    • 2011-04-19
    • 2022-11-25
    • 1970-01-01
    • 2016-02-24
    相关资源
    最近更新 更多