Announcement

Collapse
No announcement yet.

Rechenproblem in Enumerationen und Klassen

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Rechenproblem in Enumerationen und Klassen

    Hallo mal wieder, ich experimentiere mit Enumerationen und Klassen. Ich möchte eine einfache Konsole öffnen die mir die Zeiten: 10:24:36 , 11:14:36 und 11:16:51 untereinander ausgibt. Dabei sollen einfach nur 50 Minuten zur Ausgangszeit (10:24:36) und 135 Sekunden zur nächsten Zeit (11:14:36) dazugerechnet werden. Allerdings wirft mir der Compiler die Fehlermeldung „OverflowException wurde nicht behandelt. (Dividieren Sie nicht durch 0)“ aus. Allerdings kann ich beim besten willen den fehler nicht finden.
    Hier der Code:

    '---------------------------CODE--------------------------------------------Imports System.Console
    Enum Zeiteinheit As Short
    Stunde = 3600
    Minute = 60
    Sekunde = 1
    End Enum

    Class Zeit
    Private m_std As Short
    Private m_min As Short
    Private m_sek As Short

    Public Sub New(ByVal std As Integer, _
    ByVal min As Integer, _
    ByVal sek As Integer)
    std = m_std
    min = m_min
    sek = m_sek
    m_std = 10
    m_min = 24
    m_sek = 36
    End Sub
    Public Sub addieren(ByVal anzahl As Short, ByVal einheit As Zeiteinheit)
    Dim sek As Integer
    sek = zusekunden(m_std, m_min, m_sek)
    anzahl = 50
    einheit = Zeiteinheit.Minute
    End Sub
    Public Function zusekunden(ByVal istunde As short, _
    ByVal iminute As Short, _
    ByVal isekunde As Short) As Integer
    istunde = m_std * Zeiteinheit.Stunde ‚hier wird der Fehler angezeigt!
    iminute = m_min * Zeiteinheit.Minute
    isekunde = m_sek
    zusekunden = istunde + iminute + isekunde
    End Function

    Sub Anzeigen()
    WriteLine("Zeit: {0}:{1}:{2}", m_std, m_min, m_sek)
    End Sub

    Private Sub zuZeit(ByVal Sekunden As Integer)
    m_sek = Sekunden Mod 60
    m_min = (Sekunden \ 60) Mod 60
    m_std = Sekunden \ 60 * 60
    End Sub

    End Class

    Module abc
    Sub Main()
    Dim z As New Zeit(10, 24, 36)
    z.Anzeigen()
    z.Addieren(50, Zeiteinheit.Minute)
    z.Anzeigen()
    z.Addieren(135, Zeiteinheit.Sekunde)
    z.Anzeigen()
    ReadLine()
    End Sub
    End Module

    '---------------------------CODE--------------------------------------------

    Wäre spitze wenn mir jemand helfen könnte…
    Vielen Dank im vorraus.
    dracoulars

  • #2
    soviel zum thema "warum einfach wenns auch schwer geht..."
    Code:
            Dim t As New TimeSpan(10, 24, 36)
            t = t.Add(New TimeSpan(0, 50, 0))
    Oder mit datum:
    Code:
            Dim d As DateTime = DateAdd(DateInterval.Minute, 50, New DateTime(2008, 2, 5, 10, 24, 36))

    Comment


    • #3
      Ils ? :-)

      dieser Code kommt mir verdammt bekannt vor.

      Schreib mir mal eine E-Mail, an it07headhunter(AT)gmx.de
      Zuletzt editiert von Headhunter; 05.02.2008, 18:37.

      Comment

      Working...
      X