C# 一个foreach中的两个变量
我正试着在控制台上打印一副标准的卡片。到目前为止,这是我的代码,我被卡住了 我的问题是——有没有办法在cardnumber foreach语句中使用Suit enum,基本上可以打印卡号/套装、卡号/套装等等。我知道有更好的方法可以做到这一点,但我很好奇是否有可能完成。还有,如何在一行上只打印2个,然后在一行上只打印3个,依此类推 问候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
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不知怎么添加了它。我还有很多东西要学,但是谢谢你的快速回复!