[informatica] java: Vermenigvuldigen van 2 getallen

Moderators: ArcherBarry, Fuzzwood

Reageer
Gebruikersavatar
Berichten: 768

java: Vermenigvuldigen van 2 getallen

Hallo iedereen,

Dit is de vraag: http://puu.sh/1OqzS

en hier is een voorbeeldje: http://puu.sh/1OqAB

Dit is wat ik momenteel heb:

Code: Selecteer alles

import java.io.*;

public class Vermenigvuldigen {

/**

  * @param args

  */

public static void main(String[] args) throws IOException {

  InputStreamReader isr = new InputStreamReader(System.in);

  BufferedReader in = new BufferedReader(isr);

  System.out.println("Welk getal maal welk getal?");

  System.out.println("\tGeef het eerste getal in: ");

  int getal = Integer.parseInt(in.readLine());

  System.out.println("\tGeef het tweede getal in: ");

  int a = Integer.parseInt(in.readLine());

  int som = 0;

  do {

   if (getal % 2 != 0) {

som = som + a;

   }

  

   a = a * 2;

   getal = (int) (Math.floor(getal / 2));

  

  } while (getal != 1);

  System.out.println(som);

}

}
als ik 35*12 doe, dan geeft hij 36, wat dus niet juist is. Het is waarschijnlijk iets doms dat ik over het hoofd zie, maar ik zie het echt niet.
Het Wetenschapsforum heeft ook een facebook pagina!

Gebruikersavatar
Berichten: 2.609

Re: java: Vermenigvuldigen van 2 getallen

Het is een goeie oefening om zelf de fout te achterhalen ;)

Veel programmeurs doen dit door simpelweg tussenresultaten naar de output te printen.

Jij maakt nu een som en het resultaat is fout. Print de verschillende termen van die som eens uit en controleer die: heb je het juiste aantal termen, zijn de termen gewoon fout, ...?

Als je in een IDE werkt, dan kan je breekpunten in je code zetten. Als je de code dan uitvoert dan zal ze pauzeren als er een breekpunt bereikt wordt en dan kan je de inhoud van de verschillende variabelen controleren.

Hint:

Verborgen inhoud
Wat gebeurt er als getal gelijk wordt aan 1?

Gebruikersavatar
Berichten: 768

Re: java: Vermenigvuldigen van 2 getallen

ik heb mijn fout gevonden denk ik :

Code: Selecteer alles

} while (getal != 1);
moet

Code: Selecteer alles

} while (getal != 0);


Ik heb inderdaad alle sommen eens uitgeprint en zag dat het laatste er niet bij stond. Vrij logisch want zodra het getal 1 was mocht hij de lus niet meer binnen, en dat moest hij eigenlijk wel. Dom van me...
Het Wetenschapsforum heeft ook een facebook pagina!

Gebruikersavatar
Berichten: 2.609

Re: java: Vermenigvuldigen van 2 getallen

In de grenzen van loopjes kruipt nogal gemakkelijk een foutje :)

Gebruikersavatar
Berichten: 768

Re: java: Vermenigvuldigen van 2 getallen

En als je het niet ziet, dan zie je het niet. Je leest er dan altijd over :P
Het Wetenschapsforum heeft ook een facebook pagina!

Reageer