NaN Issue in ListBox

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • MasterTweaker
  • Registratie: Maart 2010
  • Laatst online: 12-09 18:01
Ik ben een klein programmaatje aan het maken met daarin een listbox met 8 vragen. Als je op een vraag drukt en je beantwoord de vraag goed dan wordt dit bij gehouden in een Label onderaan de listbox. Hetzelfde geld als je de vraag fout beantwoord. En daarnaast wordt het percentage weergegeven dat je goed beantwoord hebt.

Alleen nu is het probleem dat als je bij het opstarten in de LIstBox klikt in het witte gedeelte dat er dan een NaN waarde weergegeven wordt in de label "percentage" en ook een 0 bij "goed" en een 0 bij "fout". Terwijl er eigenlijk helemaal niets zou moeten gebeuren met deze labels als je hier drukt direct na het opstarten.

De code van het programma is hieronder te zien ( Visual Basic )
code:
1
*SNIP*


In de afbeelding hieronder staat nog wat duidelijker wat het probleem is:
Afbeeldingslocatie: http://i44.tinypic.com/33c3f3m.jpg

Alleen nu vraag ik mij dus af hoe ik dan die NaN waarde en de 0 waardes weg krijg? Weet iemand dit hier? :)

[ Voor 73% gewijzigd door RobIII op 03-04-2010 14:35 ]


Acties:
  • 0 Henk 'm!

  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
Ik zie niet hoe die 136 regels code relevant zijn voor je verhaal; en ik zeg het nogmaals: je mist een behoorlijk deel basiskennis programmeren. Doe jezelf een lol en neem nou eerst eens wat tutorials door...

Maar hier is een hint: "Good", "Wrong" en "Percent" in je (verwijderde) code zijn allemaal doubles (dat is al WTF nummer 1, want tellen doen we normaliter in integers; je kunt geen 12,39726 vragen goed hebben...). NaN staat voor Not A Number. En als je percent = ((good) / (wrong + good)) doet (copy/paste uit je code) en wrong = 0 en good = 0, wat doe je dan effectief? Juist. Je deelt door nul. En basiskennis wiskunde leert ons weer dat dat niet kan he? ;)

Hoe je die deling door nul voorkomt? Je zou eens kunnen beginnen met een "guard"; zet gewoon een if-statement om een paar regels code en je bent er. Iets als "If good+wrong>0 then..." is al voldoende.

Je (verwijderde) code bevat overigens een shitload aan zaken die beter/anders moeten/kunnen. Zoek voor de gein bijvoorbeeld eens op waar functies voor dienen of wat DRY inhoudt.

Dan vind ik je keuzes voor interface elementen, euh, merkwaardig; ook in de vorige topics ben je al gewezen daarop. Programmeren is meer dan een IDE opstarten, zaken op je form pleuren en er klakkeloos code in gaan gooien; je zult moeten (gaan) stilstaan bij hoe een interface gebruiksvriendelijk is en desnoods kijk je het af van andere programma's die een zelfde functie hebben. En een "End" is al helemaal not-done om een programma af te sluiten; je steekt een toch ook geen stok tussen je spaken als je wil stoppen met fietsen? :)

Ik begin deze basisvraagjes, die je met simpel debuggen overigens prima kunt oplossen, een beetje beu te worden; ik verzoek je dan ook vriendelijk voortaan eerst te debuggen (Debuggen: Hoe doe ik dat?) en zelf moeite te doen om je probleem op te lossen. Vooralsnog heb je niets anders gedaan dan problemen zonder enige inzet op dit forum te dumpen en dat is hier niet de bedoeling. Zie ook onze Quickstart; want je topic ontbeert een flink deel van de eisen die we daarin stellen aan een topicstart.

[ Voor 112% gewijzigd door RobIII op 03-04-2010 15:17 ]

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij


Acties:
  • 0 Henk 'm!

  • jip_86
  • Registratie: Juli 2004
  • Laatst online: 11:11
Het lijkt erop dat je ListboxClicked event gebruikt. Je kan beter ListboxItemClicked gebruiken. Die corresponderen met de listboxitem. Dan krijg je ook geen event als je klikt op de lege posities.

Dat is slechts een gok omdat de code inmiddels weer weg is.

[ Voor 13% gewijzigd door jip_86 op 03-04-2010 16:04 ]