Endlosschleife?!

  • VB.NET

Es gibt 5 Antworten in diesem Thema. Der letzte Beitrag () ist von RodFromGermany.

    Endlosschleife?!

    ]Hallo Community,
    ich wollte einen kleinen Programmcode schreiben der mir eine Minutenanzahl in Stunden ausgibt und habe folgendes programmiert:

    VB.NET-Quellcode

    1. Do While zeit Mod 60 = 0
    2. Dim sttunden As Integer = Stunden.Text
    3. sttunden = sttunden + 1
    4. Stunden.Text = sttunden
    5. zeit = zeit - 60
    6. Loop



    Jetzt hängt sich aber mein Programm auf. Ich bin neu in der Programmierszene weiß deshalb eher weniger vom ganzen. Was ich weiß ist, dass eine Endlosschleife sowas verursachen kann. Ich sehe aber keinen Fehler der eine solche als Resultat hat.

    Weiß einer von euch wieso das nicht funktionieren möchte?

    Danke Schonmal

    Cronax

    PS: Komischerweise möchte mein Code nicht korrekt angezeigt werde. Ich bitte dies zu entschuldigen. Wenn einer weiß wie ich das richtig machen muss nur melden ':-)

    Edit by der_Kurt: Codedarstellung korrigiert.

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „der_Kurt“ ()

    Hey,

    dieses furchtbare Do-While-Konstrukt brauchst doch für Dein Vorhaben gar nicht. Erst mal ist es wichtig, dass Du Option Strict ON hast. Wenn Du erst am Anfang bist, umso besser. Anleitungen und ein Warum findest Du in meiner Signatur.

    Schau Dir mal die Klasse TimeSpan an. Die kann genau das, was Du willst:

    VB.NET-Quellcode

    1. Sub Main()
    2. Dim tS As TimeSpan = TimeSpan.FromMinutes(666)
    3. Console.WriteLine(tS.TotalHours.ToString())
    4. Console.ReadLine()
    5. End Sub
    Die Unendlichkeit ist weit. Vor allem gegen Ende. ?(
    Manche Menschen sind gar nicht dumm. Sie haben nur Pech beim Denken. 8o
    Naja ich will aber auch die Minuten anzeigen lassen und Sekunden. Da kann ich ja natürlich nicht einfach die 666 Minuten z.B. in Minuten anzeigen lassen ich will ja herausfinden wieviele Stunden und Minuten das sind.

    Beipsiel;

    130 Minuten = 2 Stunden und 10 Minuten

    So möchte ich das ja haben


    PS: Sry für die dumme Frage habe es herausgefunden!

    Danke!!

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Cronax“ ()

    Ist ja nicht ohne Sinn, dass man oft nicht die komplette Lösung, sondern nur einen Ansatz postet. Schliesslich ists Dein Problem und Du willst es ja lösen.
    Die Unendlichkeit ist weit. Vor allem gegen Ende. ?(
    Manche Menschen sind gar nicht dumm. Sie haben nur Pech beim Denken. 8o

    Cronax schrieb:

    VB.NET-Quellcode

    1. Do While zeit Mod 60 = 0
    2. Dim sttunden As Integer = Stunden.Text
    3. sttunden = sttunden + 1
    4. Stunden.Text = sttunden
    5. zeit = zeit - 60
    6. Loop
    Der "Zustand" `zeit Mod 60` ändert sich in sder Schleife nicht. (zeit Mod 60) ist gleich ((zeit - 60) Mod 60). Wenn er einmal in dieser Schleife drin ist, kommt er nie wieder raus.
    Und gib Deinem Programm Option Strict On.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!