2011-02-28 34 views
2

嘿,我需要在vb.net中製作一個程序,要求用戶的生日。該計劃應該給出該人出生的星期幾和他們的占星術星座。有誰能夠幫助我??請!確定星座和出生日期

+0

到目前爲止您嘗試過什麼?當您嘗試解決您想要詢問的問題時,是否遇到過一些問題? – 2011-02-28 07:19:12

+0

我不知道從哪裏開始。我知道我必須得到用戶輸入的當前日期和日期,但在那裏我卡住了 – Peter 2011-02-28 07:23:34

+0

VB.NET DateTime類有DayOfWeek。星號,你只需要在每個符號的日期範圍內編碼。這不是全部嗎? – Rup 2011-02-28 07:26:36

回答

2
Private Function Zodiac(ByVal Birthday As Date) As String 
    Dim year As Integer = Birthday.Year 
    Dim zodiacs = { 
    New With {.From = New Date(year, 1, 1), .[To] = New Date(year, 1, 19), .Zodiac = "Capricorn"}, 
    New With {.From = New Date(year, 1, 20), .[To] = New Date(year, 2, 18), .Zodiac = "Aquarius"}, 
    New With {.From = New Date(year, 2, 19), .[To] = New Date(year, 3, 20), .Zodiac = "Pisces"}, 
    New With {.From = New Date(year, 3, 21), .[To] = New Date(year, 4, 19), .Zodiac = "Aries"}, 
    New With {.From = New Date(year, 4, 20), .[To] = New Date(year, 5, 20), .Zodiac = "Taurus"}, 
    New With {.From = New Date(year, 5, 21), .[To] = New Date(year, 6, 20), .Zodiac = "Gemini"}, 
    New With {.From = New Date(year, 6, 21), .[To] = New Date(year, 7, 22), .Zodiac = "Cancer"}, 
    New With {.From = New Date(year, 7, 23), .[To] = New Date(year, 8, 22), .Zodiac = "Leo"}, 
    New With {.From = New Date(year, 8, 23), .[To] = New Date(year, 9, 22), .Zodiac = "Virgo"}, 
    New With {.From = New Date(year, 9, 23), .[To] = New Date(year, 10, 22), .Zodiac = "Libra"}, 
    New With {.From = New Date(year, 10, 23), .[To] = New Date(year, 11, 21), .Zodiac = "Scorpio"}, 
    New With {.From = New Date(year, 11, 22), .[To] = New Date(year, 12, 21), .Zodiac = "Sagittarius"}, 
    New With {.From = New Date(year, 12, 22), .[To] = New Date(year, 12, 31), .Zodiac = "Capricorn"}} 

    Return (From z In zodiacs Where (z.From <= Birthday And Birthday <= z.[To])).Single.Zodiac 
End Function 

第一,蹩腳的嘗試:

Private Function Zodiac(ByVal Birthday As Date) As String 
    Dim year As Integer = Birthday.Year 
    Dim sodiacCapricorn() As DateTime = {New DateTime(year, 12, 22), New DateTime(year, 1, 19)} 
    Dim sodiacAquarius() As DateTime = {New DateTime(year, 1, 20), New DateTime(year, 2, 18)} 
    Dim sodiacPisces() As DateTime = {New DateTime(year, 2, 19), New DateTime(year, 3, 20)} 
    Dim sodiacAries() As DateTime = {New DateTime(year, 3, 21), New DateTime(year, 4, 19)} 
    Dim sodiacTaurus() As DateTime = {New DateTime(year, 4, 20), New DateTime(year, 5, 20)} 
    Dim sodiacGemini() As DateTime = {New DateTime(year, 5, 21), New DateTime(year, 6, 20)} 
    Dim sodiacCancer() As DateTime = {New DateTime(year, 6, 21), New DateTime(year, 7, 22)} 
    Dim sodiacLeo() As DateTime = {New DateTime(year, 7, 23), New DateTime(year, 8, 22)} 
    Dim sodiacVirgo() As DateTime = {New DateTime(year, 8, 23), New DateTime(year, 9, 22)} 
    Dim sodiacLibra() As DateTime = {New DateTime(year, 9, 23), New DateTime(year, 10, 22)} 
    Dim sodiacScorpio() As DateTime = {New DateTime(year, 10, 23), New DateTime(year, 11, 21)} 
    Dim sodiacSagittarius() As DateTime = {New DateTime(year, 11, 22), New DateTime(year, 12, 21)} 

    Select Case Birthday.DayOfYear 
    Case 1 To sodiacCapricorn(1).DayOfYear, sodiacCapricorn(0).DayOfYear To 366 
     Return "Capricorn" 
    Case sodiacAquarius(0).DayOfYear To sodiacAquarius(1).DayOfYear 
     Return "Aquarius" 
    Case sodiacPisces(0).DayOfYear To sodiacPisces(1).DayOfYear 
     Return "Pisces" 
    Case sodiacAries(0).DayOfYear To sodiacAries(1).DayOfYear 
     Return "Aries" 
    Case sodiacTaurus(0).DayOfYear To sodiacTaurus(1).DayOfYear 
     Return "Taurus" 
    Case sodiacGemini(0).DayOfYear To sodiacGemini(1).DayOfYear 
     Return "Gemini" 
    Case sodiacCancer(0).DayOfYear To sodiacCancer(1).DayOfYear 
     Return "Cancer" 
    Case sodiacLeo(0).DayOfYear To sodiacLeo(1).DayOfYear 
     Return "Leo" 
    Case sodiacVirgo(0).DayOfYear To sodiacVirgo(1).DayOfYear 
     Return "Virgo" 
    Case sodiacLibra(0).DayOfYear To sodiacLibra(1).DayOfYear 
     Return "Libra" 
    Case sodiacScorpio(0).DayOfYear To sodiacScorpio(1).DayOfYear 
     Return "Scorpio" 
    Case sodiacSagittarius(0).DayOfYear To sodiacSagittarius(1).DayOfYear 
     Return "Sagittarius" 
    Case Else 
     Return "?" 
    End Select 
End Function 

使用annomous類型和一個整潔的LINQ說法是方式更具有可讀性恕我直言。

+2

我的眼睛!!!!使用select case語句不是更容易嗎? – 2011-02-28 09:55:45

+1

我做到了!那是我的第一次嘗試,而且這樣更加可怕。讓我重新添加它... – 2011-02-28 10:06:53

+0

我想這可能是最好使用一個const的日期,因爲他們實際上是幻數。如果它們在函數外部定義,它也會整理一些東西。不要試圖過度挑剔,抱歉,如果它出現這種情況,只是試圖幫助! – 2011-02-28 10:13:32

相關問題