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"か?

12のセクションと1つのセクション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 に答える