Jeg er igang med at lære Java og har lavet en Mønt-klasse.
- public class Mønt
- {
- public int værdi;
-
- /** Konstruerer et mønt-objekt og sætter værdien til noget fornuftigt. */
- public Mønt()
- {
- kast();
- }
-
- /** kaster mønten, hvilken sætter dens værdi til noget nyt. */
- public void kast()
- {
- int tilfældigtTal = (int) Math.random();
- værdi = tilfældigtTal * 2;
- }
-
- /** Tjekker om mynten har værdien af en krone, hvis den har returneres "true" */
- public boolean krone()
- {
- boolean k = false;
- if (værdi == 0) k = true;
- return k;
- }
- }
Derefter lavede jeg en BenytMønt.java, til at teste, om ovenstående kode virkede.
- public class BenytMønt
- {
- public static void main(String[] arg)
- {
- Mønt m;
- m = new Mønt();
-
- int antalKrone = 0;
-
- for (int n = 1; n <= 100; n++)
- {
- m.kast();
-
- if (m.krone() == true) antalKrone = antalKrone + 1;
- }
- System.out.println(antalKrone);
- }
- }
Programmet kaster altså mønten 100 gange, tæller antallet af krone og lægger det hele til i variable antalKrone.
Problemet her er at programmet altid udskriver antalKrone som 100, hvilket i mine øjne er lidt urealistisk
Problemet opstår uanset om jeg bruger
- if (m.krone() == true) antalKrone = antalKrone + 1;
Eller
- if (m.værdi == 1) antalKrone = antalKrone + 1;