两个变量合二为一

本文关键字:变量 合二为一 两个 | 更新日期: 2023-09-27 17:56:04

我正在尝试在控制台上打印标准一副纸牌。到目前为止,这是我的代码,我卡住了。

我的问题 - 有没有办法在每个语句的卡号中使用西装枚举,基本上可以打印卡号/花色、卡号/花色等。我知道有更好的方法可以做到这一点,但我很好奇是否有可能完成。还有任何想法如何在一行上只打印 2,之后只在行上打印 3 秒等等?

问候

using System;
using System.Linq;
class Print_a_Deck_of_52_Card   
{
public enum Suit
{
    Club = ''u2663',
    Diamond = ''u2666',
    Heart = ''u2665',
    Spades = ''u2660',
}
public enum CardNumber
{
    Two = 2,
    Three = 3,
    Four = 4,
    Five = 5,
    Six = 6,
    Seven = 7,
    Eight = 8,
    Nine = 9,
    Ten = 10,
    J = 11,
    Q = 12,
    K = 13,
    A = 14
}
static void Main()
{
    Console.OutputEncoding = System.Text.Encoding.Unicode;
    foreach (Suit val1 in Enum.GetValues(typeof(Suit)))
        foreach (CardNumber val in Enum.GetValues(typeof(CardNumber)))
        {
            for (int i = 0; i < 4; i++)
            {
                if ((int)val > 10)
                {
                    Console.WriteLine("{0}", val);
                }
                else
                {
                    Console.WriteLine("{0}", (int)val);
                }
            }
        }
}

}

两个变量合二为一

是的,您可以在 foreach 循环主体中的任何位置使用迭代器变量,即使该循环包含另一个循环:

foreach (Suit val1 in Enum.GetValues(typeof(Suit)))
{
    foreach (CardNumber val in Enum.GetValues(typeof(CardNumber)))
    {
        if ((int)val > 10)
        {
            Console.WriteLine("{0} of {1}", val, val1);
        }
        else
        {
            Console.WriteLine("{0} of {1}", (int)val, val1);
        }
    }
}

现在,如果你想重写它,以便所有 2 将一起打印,然后是 3,依此类推,只需交换循环:

foreach (CardNumber val in Enum.GetValues(typeof(CardNumber)))
{
    foreach (Suit val1 in Enum.GetValues(typeof(Suit)))
    {
        if ((int)val > 10)
        {
            Console.WriteLine("{0} of {1}", val, val1);
        }
        else
        {
            Console.WriteLine("{0} of {1}", (int)val, val1);
        }
    }
}

要将它们写成一行,您可以使用 Write 而不是在循环内将每个值保持在一起,然后在循环外部WriteLine将该行与下一行分开:

foreach (CardNumber val in Enum.GetValues(typeof(CardNumber)))
{
    foreach (Suit val1 in Enum.GetValues(typeof(Suit)))
    {
        if ((int)val > 10)
        {
            Console.Write("{0} of {1}", val, val1);
        }
        else
        {
            Console.Write("{0} of {1}", (int)val, val1);
        }
    }
    Console.WriteLine();
}