-2

ユーザーが入力した日付を検証するプログラムを作成するように求められています。日付は、日、月、年を表す 3 つの整数変数として入力する必要があります。出力は、日付が有効かどうかを示す必要があります。

簡単そうに聞こえますが、ユーザーに日、月、年を入力してもらうだけです。次に、これを呼び出して日付として表示します。ただし、この方法でその月の日数を計算できるため、ユーザーに最初に月を入力してもらいたい場合があります。

私がする必要があると思うのは、配列または 3 から始めることです。各月の日数をプログラムに記憶させる必要があるため、月が 2 月として入力された場合、29 を超えるものは入力として受け入れられません。

夜に Visual Studio を見始める前に、私はこれについて正しい方向に沿ったどこかを考えていますか? または、これに対して私が取ることができる別の角度はありますか?

さて、私はこれに取り組んできました。これが私が持っているものです。

int monthentered = 0;
            int dayentered = 0;
            int year = 0000;
            int [] month = new int [12];
            int [] day = new int [31];
            bool leap = false;

            for (int x = 0; x <= 11; x++)
            {
                month[x] = x+1;
            }

            for (int x = 0; x <= 30; x++)
            {
                day[x] = x+1;
            }
            Console.WriteLine("Please enter a year...");
            year = (Convert.ToInt16(Console.ReadLine()));
            Console.WriteLine("{0}", year);

            Console.WriteLine("Please enter a month...");
            monthentered = (Convert.ToInt16(Console.ReadLine()));

            Console.WriteLine("Please enter a day...");
            dayentered = (Convert.ToInt16(Console.ReadLine()));

            while (monthentered == 01 || 03 || 05 || 07 || 08 || 10 || 12)
            {
                while (dayentered == 31)
                {
                    Console.WriteLine("There are only 30 days in this month please re-enter your day...");
                    dayentered = (Convert.ToInt16(Console.ReadLine()));
                }
            }

            while (monthentered == 02)
            {
                while (dayentered > 28)
                {
                    Console.WriteLine("There are only 28 days in this month please re-enter your day...");
                    dayentered = (Convert.ToInt16(Console.ReadLine()));
                }
            }



            Console.WriteLine("{0}/{1}/{2}", dayentered, monthentered, year);
            Console.ReadKey();

while monthenter = bit の問題。誰かが私が間違ったことについて助けてくれますか?

4

2 に答える 2

1
bool inputOk = false;
try
{
    try
    {
        int y = int.Parse(yearTextBox.Text);
        int m = int.Parse(monthTextBox.Text);
        int d = int.Parse(dayTextBox.Text);
        inputOk = true;
    }
    catch
    {
        Debug.Writeline("Invalid input");
    }

    if(inputOk)
    {
        DateTime value = new DateTime(y, m, d);
        Debug.Writeline("It's a valid date");
    }
}
catch
{
    Debug.Writeline("It isn't a valid date");
}
于 2012-11-13T14:00:07.730 に答える
0

DateTime.ParseExactは、フォーマットを指定すれば解析を実行できます。

この質問は以前にここで回答されています。配列を使用したアプローチは機能しますが、.NET API の方がはるかに優れています。

于 2012-11-13T13:59:49.380 に答える