2016-06-09 5 views
0

Ich habe Schwierigkeiten mit einem Problem für meine Visual Basic 2012-Klasse. Die Anweisungen sind unter:Parallele Arrays mit String und Ganzzahl

Monat \ Tage Programm: Die Anwendung zwei parallele Arrays verwenden: ein String-Array, das mit dem Namen der Monate und ein Integer-Array initialisiert wird, die mit der Anzahl der Tage initialisiert in jedem Monat. Wenn auf eine Schaltfläche geklickt wird, zeigt die Anwendung ihre Ausgabe in einem Listenfeld an.

Hier ist mein Code so weit. Wie programmiere ich es so, dass der Monat der richtigen Anzahl von Tagen zugewiesen wird? Danke für jede Hilfe!

Private Sub btnclick_Click(sender As Object, e As EventArgs) Handles btnclick.Click 
    'displays the month associated with the number of days entered by the user 
    Dim months() As String = {"January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"} 
    Dim days() As Integer = {31, 28, 30} 
    Dim searchfor As String 
    Dim subscript As Integer 

    'assign the month to a variable 
    searchfor = txtbox.Text 

    'search the month array for the number of days 
    'continue searching until there are no more array 
    'elements to search for or until the months are found 
    Do Until subscript = months.length _ 
     OrElse searchfor = months(subscript) 
     subscript = subscript + 1 
    Loop 

    'determine whether the days were found in the months array 
    If subscript < months.length Then 
     dayslabel.Text = days(subscript).ToString 
    Else 

    End If 

    txtbox.Focus() 

End Sub 

Private Sub txtbox_TextChanged(sender As Object, e As EventArgs) Handles txtbox.TextChanged 
    txtbox.SelectAll() 
    dayslabel.Text = String.Empty 
End Sub 

End Class

+0

Warum 12 hast du 'Tage()' drei Elemente lang machen und nicht? – GSerg

+0

Ich glaube, dass sie es interpretiert, um die Möglichkeiten '{31, 28, 30}' zu speichern, und nicht die vollständigen Details der parallelen Arrays kennen –

+1

Die sind wirklich nicht parallel, wenn sie unterschiedliche Größen sind. Eine kleine Klasse, um den Namen und "Größe" zu halten wäre besser, oder vielleicht ein Tupple. – Plutonix

Antwort

0

Ich denke, so etwas wie das ist, was sie anstreben:

Dim months() As String = {"January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"} 
    Dim days() As Integer = {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31} 
    'click event 
    If months.Length = days.Length Then 
     For i As Integer = 0 To months.GetUpperBound(0) 
      ListBox1.Items.Add(months(i) & " has " & days(i) & " days in it") 
     Next 
    End If 

zwei parallele Arrays

Für jeden gültigen Index X, die Position (bei Index X) in den Monaten Array wird in der Anzahl der Tage-Array zu dem Punkt (X bei Index) bezogen

auch hint hint ...

initialisiert mit der Anzahl der Tage in jeden Monat

von dem Moment an sie erstellt wird, sollte die Anzahl der Tage Array für jeden Monat ein Element haben

0

Sie Anzahl der Tage nach Name Monat wie folgt zu erreichen:

Private Sub btnclick_Click(sender As Object, e As EventArgs) Handles btnclick.Click 
    Try 
     Dim Year As Integer = 2016 
     Dim MonthName As String = txtbox.Text 
     Dim Month As Integer = DateTime.ParseExact(MonthName, "MMMM", CultureInfo.CurrentCulture).Month 
     dayslabel.Text = DateTime.DaysInMonth(Year, Month) 
    Catch ex As Exception 
     'Message 
    End Try 
End Sub