填充一副卡片并从这副卡片中打印一张随机卡片 C#

问题描述 投票:0回答:1

static void Main(string[] args) {

    string[] cardDeck = new string[52];
    string[] numbers = { "Ace", "2", "3", "4", "5", "6", "7", "8", "9", "10", "Jack", "Queen",    "King" };
    string[] suites = { "Hearts", "Clubs", "Diamonds", "Spades" };
    for (int i = 0; i < numbers.Length; i++)
    {
        for (int j = 0; j < suites.Length; j++)
        {
            cardDeck[i + j] = numbers[i] + " of " + suites[j];
            Console.WriteLine(cardDeck[i + j]);
        }
    }
    Console.WriteLine("The random card is " + RandomCard(cardDeck));
}

static string RandomCard(string[] deck)
{
    Random card = new Random();
    int index = card.Next(0, deck.Length);
    return deck[index];
}

我在打印随机卡时遇到困难 - 有时可以打印,有时不能。我是否正确填写了卡片组?我该如何解决这个问题?

c# arrays random
1个回答
0
投票

引入第三个索引变量

k
以跟踪卡片在牌组中的位置。每次将新卡放入牌组时,您可以与
j
一起递增变量,即在内部 for 循环内:

static void Main(string[] args)
{
    string[] cardDeck = new string[52];
    string[] numbers = { "Ace", "2", "3", "4", "5", "6", "7", "8", "9", "10", "Jack", "Queen", "King" };
    string[] suites = { "Hearts", "Clubs", "Diamonds", "Spades" };

    int k = 0;

    for (int i = 0; i < numbers.Length; i++)
    {
        for (int j = 0; j < suites.Length; j++)
        {
            cardDeck[k] = numbers[i] + " of " + suites[j];
            Console.WriteLine(cardDeck[k]);
            k++;
        }
    }
    Console.WriteLine("The random card is " + RandomCard(cardDeck));
}

static string RandomCard(string[] deck)
{
    Random card = new Random();
    int index = card.Next(0, deck.Length);
    return deck[index];
}
© www.soinside.com 2019 - 2024. All rights reserved.