Springen naar inhoud

java: Vermenigvuldigen van 2 getallen



  • Log in om te kunnen reageren

#1

Kwintendr

    Kwintendr


  • >250 berichten
  • 768 berichten
  • VIP

Geplaatst op 16 januari 2013 - 14:33

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:

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.

Veranderd door Kwintendr, 16 januari 2013 - 14:37

Het Wetenschapsforum heeft ook een facebook pagina!

Dit forum kan gratis blijven vanwege banners als deze. Door te registeren zal de onderstaande banner overigens verdwijnen.

#2

Xenion

    Xenion


  • >1k berichten
  • 2606 berichten
  • Moderator

Geplaatst op 16 januari 2013 - 14:53

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?

#3

Kwintendr

    Kwintendr


  • >250 berichten
  • 768 berichten
  • VIP

Geplaatst op 16 januari 2013 - 15:06

ik heb mijn fout gevonden denk ik :

} while (getal != 1);

moet

} 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!

#4

Xenion

    Xenion


  • >1k berichten
  • 2606 berichten
  • Moderator

Geplaatst op 16 januari 2013 - 15:08

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

#5

Kwintendr

    Kwintendr


  • >250 berichten
  • 768 berichten
  • VIP

Geplaatst op 16 januari 2013 - 15:12

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!






Also tagged with one or more of these keywords: informatica

0 gebruiker(s) lezen dit onderwerp

0 leden, 0 bezoekers, 0 anonieme gebruikers

Ook adverteren op onze website? Lees hier meer!

Gesponsorde vacatures

Vacatures