Jeg forsøger at programmere hammerslag i et auktionshus. Jeg har brugt iterator metoder til at iterere igennem budene. Mit problem er hvorledes jeg skal komme ud af den indre while løkke som sammenligner tider, hvis der kommer et nyt bud. Som det er programmeret nu så gennemføres hele den indre while lykke når der kommer et bud.
den skriver nyt bud 6000 kr. første anden tredie, varen er solgt!
Hvis der nu kommer et bud mindt i hvordan bryder jeg så løkken og kommer ud i den yderste løkke, hvor så processen skal starte forfra.
if (varePaaAuktion.FoersteBud()) { do { hoejesteBud = varePaaAuktion.GetCurrentBud();
int counter = 0;
while(true) { DateTime nu = DateTime.Now; Thread.Sleep(1000);
if (hoejesteBud.GetBudTidspunkt().AddSeconds(18) <= nu) { if (hammerslag != "tredie, varen er solgt!") { hammerslag = "tredie, varen er solgt!"; monitor.BroadcastServerBeskedTilKunde(kundeIPadresse, hammerslag); } } else if (hoejesteBud.GetBudTidspunkt().AddSeconds(15) <= nu) { if (hammerslag != "anden!") { hammerslag = "anden!"; monitor.BroadcastServerBeskedTilKunde(kundeIPadresse, hammerslag); } } else if (hoejesteBud.GetBudTidspunkt().AddSeconds(10) <= nu) { if (hammerslag != "første!") { hammerslag = "første!"; Console.WriteLine(hammerslag); monitor.BroadcastServerBeskedTilKunde(kundeIPadresse, hammerslag); } } counter++; //end indre while løkke
//Post: Aktuelt bud (den som iterator peger på) returneret public Bud GetCurrentBud() { return (Bud)budCollection[aktueltBudIdx]; }
//Post: Hvis der er flere bud, peger iterator på det næste // og der returneres true, ellers returneres false public bool NaesteBud() { aktueltBudIdx++; return (aktueltBudIdx < budCollection.Count); }
generelt: typisk bruges break til at stoppe løkker (for, while...), og hvis break ikke kan løse det givne problem bruges goto (tilfælde hvor man skal ud af flere nestede løkker).
Ja du må undskylde, men jeg er lidt ny indenfor området. Dit eksempel virker fint alene, men hvordan får jeg det til at virke sammen med min kode. Hvis jeg initialiserer variablen counter til 18 og siger den skal break, når den har talt ned til 0 så går der 18 sekunder og den når at udskrive hele den indre while løkke. Det jeg prøver på er, hvis f.eks det første bud er kommet ind og den har nået og f.eks. skrive "første", så kommer der et nyt bud også skal den afbryde løkken og starte forfra med at tælle indtil den igen bliver afbrudt af et nyt bud. Her kan der jo være gået 2, 5 eller 12 sekunder. Jeg skal på en eller anden måde have fat i det aktuelt højesteBud og dette bud skal afbrydes hvis der kommer et nyt bud, men hvordan "thats the question"???
// Display the countdown details - accepted property set to true if // - we the bet has "timed out". Countdown(ref highestBet); }
// highestBet Accepted if we are here... }
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.