0

这是我的源代码,一切都很好,直到我得到输出并且我无法让它工作。Visual Studio 不喜欢我在输出部分中的内容,标记为 //OUTPUT。

我需要添加或更改什么才能使其正常工作?

static void Main(string[] args)
{
    int monthNumber;
    string monthName;

    //INPUT
    Console.WriteLine("Please enter the number of the month");
    monthNumber = Convert.ToInt16(Console.ReadLine());

    //PROCCESSESS
    if (monthNumber == 1)
    {
        monthName = "January";
    }
    else if (monthNumber == 2)
    {
        monthName = "February";
    }
    else if (monthNumber == 3)
    {
        monthName = "March";
    }
    else if (monthNumber == 4)
    {
        monthName = "April";
    } 
    else if (monthNumber == 5)
    {
        monthName = "May";
    }
    else if (monthNumber == 6)
    {
        monthName = "June";
    }
    else if (monthNumber == 7)
    {
        monthName = "July";
    }
    else if (monthNumber == 8)
    {
        monthName = "August";
    }
    else if (monthNumber == 9)
    {
        monthName = "September";
    }
    else if (monthNumber == 10)
    {
        monthName = "October";
    } 
    else if (monthNumber == 11)
    {
        monthName = "November";
    }
    else if (monthNumber == 12)
    {
        monthName = "December";
    }

    //space to increase readability
    Console.WriteLine(Environment.NewLine);

    //OUTPUT
    Console.WriteLine("Month:" + monthName);
    Console.ReadLine();
}
4

3 回答 3

4

monthName必须在使用前进行初始化。因此,您可以将声明行更改为

string monthName = null;

那是因为代码不能保证monthName被分配。例如,如果输入数字是 13 怎么办?

于 2012-11-13T06:25:26.163 回答
4

你有很多else if,但最后,else没有一个if适用的情况。因此,编译器不能保证monthName曾经分配过。也许用户输入了"28"

使用包含十二个部分和一个部分的switch语句会更好看。casedefault

而且,月份名称内置在框架中。所以using System.Globalization;你可以简单地说

monthName = CultureInfo.CurrentCulture.DateTimeFormat.GetMonthName(monthNumber);

或者

monthName = CultureInfo.InvariantCulture.DateTimeFormat.GetMonthName(monthNumber);

您也可以DateTime直接从输入中获取:

DateTime dateTime = DateTime.ParseExact(Console.ReadLine(), "%M", null);

然后

monthName = dateTime.ToString("MMMM");
于 2012-11-13T07:09:40.013 回答
0
  • a) 声明一个变量
  • b)如果您使用月份名称,并且想要一些特定的名称,请尝试使用枚举。真的很容易和功能。

您可以按照自己对这些名称/标记进行编号的速度来设置自己的名称/标记。

例如。

enum Days {Sat=1, Sun, Mon, Tue, Wed, Thu, Fri};

于 2012-11-13T07:40:12.283 回答