Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/307.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/haskell/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 一个foreach中的两个变量_C#_Foreach_Enums_Console_Playing Cards - Fatal编程技术网

C# 一个foreach中的两个变量

C# 一个foreach中的两个变量,c#,foreach,enums,console,playing-cards,C#,Foreach,Enums,Console,Playing Cards,我正试着在控制台上打印一副标准的卡片。到目前为止,这是我的代码,我被卡住了 我的问题是——有没有办法在cardnumber foreach语句中使用Suit enum,基本上可以打印卡号/套装、卡号/套装等等。我知道有更好的方法可以做到这一点,但我很好奇是否有可能完成。还有,如何在一行上只打印2个,然后在一行上只打印3个,依此类推 问候 using System; using System.Linq; class Print_a_Deck_of_52_Card { public enu

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

我的问题是——有没有办法在cardnumber foreach语句中使用Suit enum,基本上可以打印卡号/套装、卡号/套装等等。我知道有更好的方法可以做到这一点,但我很好奇是否有可能完成。还有,如何在一行上只打印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);

                }
            }

        }

}
使用系统;
使用System.Linq;
类别打印卡的卡片组
{
公开枚举诉讼
{
俱乐部='\u2663',
菱形='\u2666',
心脏='\u2665',
黑桃='\u2660',
}
公共枚举卡号
{
二等于二,
三等于三,
四等于四,
五等于五,
六等于六,
七等于七,
八等于八,
九等于九,
十等于十,
J=11,
Q=12,
K=13,
A=14
}
静态void Main()
{
Console.outpunecoding=System.Text.Encoding.Unicode;
foreach(Enum.GetValues中的Suit val1(typeof(Suit)))
foreach(Enum.GetValues中的CardNumber val(typeof(CardNumber)))
{
对于(int i=0;i<4;i++)
{
如果((int)val>10)
{
Console.WriteLine(“{0}”,val);
}
其他的
{
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();
}

这么简单。。。在过去的一个小时里,它一直困扰着我,我就是想不出来。有时候休息一下也许是个好主意。谢谢!还有一个问题——在每一行上加上“of”,我想这是使用enum时的内置功能。有没有办法把它去掉?@tslid啊,没有,我就是这么写的(我想你想要的是像《黑桃2》)。只需从
控制台的格式字符串中删除'of'。Write
。哦,根本没有注意到添加了of:)我以为typeoff不知怎么添加了它。我还有很多东西要学,但是谢谢你的快速回复!