-4

了解しました。ユーザーに年(たとえば2002年)の入力を要求し、その年の最初の火曜日を返すプログラムを作成しています。

どうやってこれを始めたらいいのかわからない。誰か助けてもらえますか?

4

3 に答える 3

2

どうやってこれを始めたらいいのかわからない。

あなたは、最初はコードについて考えることさえせずに、この問題を解決する方法を考えることによっています。あなたはいくつかの異なるアプローチを考えることができます:

  • 木曜日になるまで、1年の日(1月1日から開始)をループします。
  • その年の1月1日の日付を取得します。曜日を確認してください。この曜日から木曜日までの日数を追加します。

次に、コーディング部分について 説明します。DateTime構造体は、.NETで日付を表すために使用されます。コンストラクターを使用して、特定の日、月、および年の日付を作成できます。のドキュメントを見ると、役立つDayOfWeekDateTimeメソッドが見つかります。

これで始められることを願っています!

編集:

ユーザー入力(文字列)を整数に変換するには、Parse関数を使用します。

于 2013-02-15T20:23:03.077 に答える
1
Public Function GetFirstTuesday(year As Integer) As Date
    Dim d As Date = New Date(year, 1, 1, 0, 0)
    For i As Integer = 0 To 6
        If d.AddDays(i).DayOfWeek = DayOfWeek.Tuesday) Then
            Return d.AddDays(i)
        End If
    Next
End Function
于 2013-02-15T20:02:46.553 に答える
0

Linqを使って解いてみました(linq初心者です)。エラー処理はあなた次第です。

Sub Main()
    Console.WriteLine(GetFirstTuesdayOfYear(2013)) 'returns 01.01.2013
    Console.WriteLine(GetFirstTuesdayOfYear(2012)) 'returns 03.01.2012
    Console.WriteLine(GetFirstTuesdayOfYear(2011)) 'returns 04.01.2011
    Console.WriteLine(GetFirstTuesdayOfYear(2010)) 'returns 05.01.2010
    Console.WriteLine(GetFirstTuesdayOfYear(2009)) 'returns 06.01.2009
    Console.Read()
End Sub

Private Function GetFirstTuesdayOfYear(year As Integer) As DateTime
    Return Enumerable.Range(1, DateTime.DaysInMonth(Year, 1)).[Select](Function(day) New DateTime(Year, 1, day)).ToList().FirstOrDefault(Function(x) x.DayOfWeek = DayOfWeek.Tuesday)
End Function
于 2013-02-15T20:23:04.950 に答える