我需要输出以下内容:
您输入的日期是:2017年5月16日,星期一
我写道:
namespace Date
{
class Program
{
enum Day { Mon, Tue, Wed, Thu, Fri, Sat, Sun };
enum Month { January, February, March, April, May, June, July, August, September, October, November, December };
static void Main(string[] args)
{
Console.Write("Enter Month in Numeric form (Example 1 for January): ");
Console.Write("Enter Day of the week in Numeric form (Example 1 for Monday): ");
Console.Write("Enter day in Numeric form (Example 15): ");
Console.Write("Enter year in Numeric form (Example 2018): ");
}
}
}
但是我不知道如何将枚举值与输入的数字链接并打印出来。
答案 0 :(得分:1)
看看C# documentation for enum types。它说明了如何为枚举类型分配整数值,该整数值可用于解决此问题。还要查看Enum.TryParse,您可以使用它来解析字符串,以查看它们是否与枚举中的任何值匹配。
答案 1 :(得分:0)
仅出于娱乐目的,而且完全是一个顶级解决方案,假设您的enums
被隐式赋值,则可以使用generics,Int.TryParse
和Enum.IsDefined
给予
enum Day { Mon=1, Tue=2, Wed=3, Thu=4, Fri=5, Sat=6, Sun=7 };
enum Month { January=1, February=2, March=3, April=4, May=5, June=6, July=7, August=8, September=9, October=10, November=11, December=12 };
public static bool TryParse<T>(string input, out T result) where T : IConvertible
{
// define default for worst case
result = default(T);
// if its not an int bail
if (!int.TryParse(input, out var value))
return false;
// if its not defined in the enum bail
if (!Enum.IsDefined(typeof(T), value))
return false;
// yay convert and return true
result = (T)(object)value;
return true;
}
用法
Month month;
Day day;
Console.WriteLine("Enter Month in Numeric form (Example 1 for January): ");
while (!TryParse(Console.ReadLine(), out month))
Console.WriteLine("OMG you had one job");
Console.WriteLine($"You entered {month}");
Console.WriteLine("Enter Day of the week in Numeric form (Example 1 for Monday): ");
while (!TryParse(Console.ReadLine(), out day))
Console.WriteLine("OMG you had one job");
Console.WriteLine($"You entered {day}");
输出
Enter Month in Numeric form (Example 1 for January):
123
OMG you had one job
1
You entered January
Enter Day of the week in Numeric form (Example 1 for Monday):
3
You entered Wed
简而言之,您可以通过强制转换将int
转换为enum
Day day = (Day)SomeIntValue;
答案 2 :(得分:0)
namespace Date
{
class Program
{
enum Day { Mon, Tue, Wed, Thu, Fri, Sat, Sun };
enum Month { January, February, March, April, May, June, July, August, September, October, November, December };
static void Main(string[] args)
{
Month month;
Day week;
int day, year;
do
{
Console.Write("Enter Month in Numeric form (Example 1 for January): ");
} while (!Enum.TryParse(Console.ReadLine(), out month));
do
{
Console.Write("Enter Day of the week in Numeric form (Example 1 for Monday): ");
} while (!Enum.TryParse(Console.ReadLine(), out week));
do
{
Console.Write("Enter day in Numeric form (Example 15): ");
} while (!int.TryParse(Console.ReadLine(), out day));
do
{
Console.Write("Enter year in Numeric form (Example 2018): ");
} while (!int.TryParse(Console.ReadLine(), out year));
Console.WriteLine(string.Format("The date you entered is: {3}, {0} {1}, {2}", month, day, year, week));
}
}
}