c#读取月份数并输出月份名称

时间:2014-07-28 10:21:14

标签: c#

我试着编写一个C#控制台程序来读取一个月的数字并输出月份名称,然后询问用户是否想知道该月份的天数,如果是,则输出该数字天。假设没有闰年,2月总共只有28天。

如果有人可以提供帮助,请提前致谢!!

编辑:

这是我到目前为止,我在问题的后半部分遇到问题,我不知道如何询问用户他们是否想知道这个月的日期以及如何使用开关输出天数...

class MainClass
{
  public static void Main (string[] args)
  {
    {
      Console.WriteLine("Give me an integer between 1 and 12, and I will give you the month");

      int monthInteger = int.Parse(Console.ReadLine());

      DateTime newDate = new DateTime(DateTime.Now.Year, monthInteger, 1);

      Console.WriteLine("The month is: " + newDate.ToString("MMMM"));
      Console.WriteLine();

4 个答案:

答案 0 :(得分:3)

一个简单的开关盒会吗?

string input = Console.In.ReadLine();
int number = -1;
int.TryParse(input, out number);
switch (number)
{
    case 1:
        Console.Out.WriteLine("January");
        break;
    case 2:
        Console.Out.WriteLine("February");
        break;
    case -1:
        Console.Out.WriteLine("Please input a valid number");
        break;
    default:
        Console.Out.WriteLine("There are only 12 months in a year");
        break;
}

我认为这足以完成剩下的代码。

下次,请提供一些已经尝试过的代码,只是要求简单的代码通常无处可用。

答案 1 :(得分:1)

public static string getName(int i)
{
    string[] names = { "jan", "feb", ... } // fill in the names
    return names[i-1];
}

答案 2 :(得分:1)

public static string getMonthName(int mounth)
{
    DateTime dt = new DateTime(2000, mounth, 1);
    return dt.ToString("M").Substring(0, dt.ToString("M").IndexOf(' '));
}

答案 3 :(得分:1)

根据您关联的其他相关问题(https://stackoverflow.com/questions/24996241/c-sharp-number-of-days-in-a-month-using-a-switch#24996339)...

这显然是一项学术活动,希望您了解switch声明。

这是一个完整的示例,演示了几种切换语句的方法。由于您已经从用户获取了月份编号,因此可以通过在月份和月份中的天数之间创建映射来打开该值。

即便:

class MainClass
{
    public static void Main(string[] args)
    {
        Console.WriteLine("Give me an integer between 1 and 12, and I will give you the month");

        int monthInteger = int.Parse(Console.ReadLine()); // WARNING: throws exception for non-integer input

        Console.WriteLine(GetMonthName(monthInteger));
        Console.WriteLine();

        Console.Write("Display days in month (y/n)? ");
        if (Console.ReadLine() == "y")
        {
            int daysInMonth = GetDaysInMonth_NoLeapYear(monthInteger);
            if (daysInMonth > 0)
            {
                Console.WriteLine(String.Format("{0} days in {1}",
                    daysInMonth.ToString(),
                    GetMonthName(monthInteger)));
            }
            else
            {
                Console.WriteLine("Invalid month entered.");
            }
            Console.WriteLine();
        }

        Console.WriteLine("Hit enter to close");
        Console.ReadLine();
    }

    private static String GetMonthName(int monthInteger)
    {
        DateTime newDate = new DateTime(DateTime.Now.Year, monthInteger, 1);
        String monthName = newDate.ToString("MMMM");
        return monthName;
    }

    /// <summary>
    /// Prints days in month. Assumes no leap year (since no year context provided) so Feb is always 28 days.
    /// </summary>
    /// <param name="monthInteger"></param>
    private static int GetDaysInMonth_NoLeapYear(int monthInteger)
    {
        int daysInMonth = -1; // -1 indicates unknown / bad value
        switch (monthInteger)
        {
            case 1: // jan
                daysInMonth = 30;
                break;
            case 2: // feb
                daysInMonth = 28; // if leap year it would be 29, but no way of indicating leap year per problem constraints
                break;
            case 3: // mar
                daysInMonth = 31;
                break;
            case 4: // apr
                daysInMonth = 30;
                break;
            case 5: // may
                daysInMonth = 31;
                break;
            case 6: // jun
                daysInMonth = 30;
                break;
            case 7: // jul
                daysInMonth = 31;
                break;
            case 8: // aug
                daysInMonth = 31;
                break;
            case 9: // sep
                daysInMonth = 30;
                break;
            case 10: // oct
                daysInMonth = 31;
                break;
            case 11: // nov
                daysInMonth = 30;
                break;
            case 12: // dec
                daysInMonth = 31;
                break;
        }
        return daysInMonth;
    }

    /// <summary>
    /// Prints days in month. Assumes no leap year (since no year context provided) so Feb is always 28 days.
    /// </summary>
    /// <param name="monthInteger"></param>
    private static int GetDaysInMonth_NoLeapYear_Compact(int monthInteger)
    {
        // uses case statement fall-through to avoid repeating yourself

        int daysInMonth = -1; // -1 indicates unknown / bad value
        switch (monthInteger)
        {
            case 2: // feb
                daysInMonth = 28; // if leap year it would be 29, but no way of indicating leap year per problem constraints
                break;
            case 3: // mar
            case 5: // may
            case 7: // jul
            case 8: // aug
            case 10: // oct
            case 12: // dec
                daysInMonth = 31;
                break;
            case 1: // jan
            case 4: // apr
            case 6: // jun
            case 9: // sep
            case 11: // nov
                daysInMonth = 30;
                break;
        }
        return daysInMonth;
    }
}

GetDaysInMonth_NoLeapYear_Compact仅用于说明允许多个case语句使用相同代码的case后悔行为。