Odd numbers van input

    This site uses cookies. By continuing to browse this site, you are agreeing to our Cookie Policy.

    • Odd numbers van input

      Hallo allemaal,

      Ik moet voor school een klein programmaatje schrijven die alle oneven getallen van de invoer bij elkaar optelt... Alleen kom ik er maar niet uit.

      Ik heb zelf de volgende code:

      PHP Source Code

      1. import java.util.Scanner;
      2. public class opdrachtE {
      3. public static void main(String[] args) {
      4. Scanner in = new Scanner(System.in);
      5. System.out.print("Getal:");
      6. int nummers = in.nextInt();
      7. int som = 0;
      8. int antwoord = 0;
      9. String nummersLengte = String.valueOf(nummers);
      10. for(int x = 0; x < nummersLengte.length(); x++) {
      11. int getal = nummersLengte.charAt(x);
      12. if(getal%2 == 1) {
      13. som = som + getal;
      14. }
      15. antwoord = som;
      16. }
      17. System.out.println("antwoord is:" + antwoord);
      18. }
      19. }
      Display All


      Echter wanneer je nu bijvoorbeeld 1234 invult, komt er als output: antwoord is: 100. Terwijl het antwoord zou moeten zijn 1+3= 4. Iemand enig idee wat ik fout doe?
    • Ah, dit is een leuke! Het probleem zit hem in regel 18:

      Source Code

      1. int getal = nummersLengte.charAt(x);


      Ga eens na wat de return-value is van charAt(), en kijk eens of je het dan weet.

      Nog wat andere opmerkingen:
      - Wat is de toegevoegde waarde van de variabele antwoord?
      - Classnamen in Java zijn CamelCase, en beginnen dus met een hoofdletter.
      - Gebruik je een IDE (Netbeans, IntelliJ, ..)? Zo nee, probeer dat eens. Zo ja, als je leert met de debugger om te gaan, had je dit kunnen vinden. Zodoende heb ik het ook gevonden.
    • Hallo Stefan,

      Hier zit inderdaad de fout in. Wanneer ik namelijk 1234 invul, krijg ik als waardes: 49,50,51,52 terug. Echter is bij mij nu helemaal de klomp gebroken, want nu begrijp ik niet waar die waardes vandaan komen?

      Over de andere opmerkingen:

      - Antwoord heeft inderdaad geen toegevoegde waarde, dit is eigenlijk een overblijfsel van andere pogingen die ik heb gedaan. Deze heb ik nu ook verwijderd :)
      - Op school hebben we geleerd dat je begint met een kleine letter en elk ander woord met een hoofdletter. Dus bijv.: classJavaVoorSchool
      - Ik gebruik momenteel Eclipse (moet van school). Daar heb ik echter geen fout melding gekregen.
    • Ik krijg ook Java in mijn studie en ik heb het inderdaad geleerd met de CamelCase.
      Verder vraag ik me af waarvoor Scanner dient, kan je dat even toe lichten?

      Ook een opmerking maar niet persé een fout:

      Source Code

      1. som = som + getal;


      Je kan bovenstaand stukje code herschrijven naar onderstaand stukje code. Is iets sneller qua ingeven, weet niet of er ook een ander verschil is.

      Source Code

      1. som += getal;
      Met vriendelijke groet,

      L.Kok
      YoungVision
    • Super jongens, de laatste tip van je stefan... Dat ik daar zelf niet op kwam :huh:! Maar in ieder geval hartstikke bedankt jongens!

      Hier mijn volledig werkende code, mocht iemand er nog belang bij hebben:

      PHP Source Code

      1. import java.util.Scanner;
      2. public class opdrachtE {
      3. public static void main(String[] args) {
      4. Scanner in = new Scanner(System.in);
      5. System.out.print("Getal:");
      6. int nummers = in.nextInt();
      7. int som = 0;
      8. String nummersLengte = String.valueOf(nummers);
      9. for(int x = 0; x < nummersLengte.length(); x++) {
      10. int getal = Character.getNumericValue(nummersLengte.charAt(x));
      11. System.out.println(getal);
      12. if(getal%2 == 1) {
      13. som = som + getal;
      14. }
      15. }
      16. System.out.println("antwoord is:" + som);
      17. }
      18. }
      Display All


      PS: Als ik de class verander in CamelCase, dus naar OpdrachtE, geeft hij de volgende error:
      The public type OpdrachtE must be defined in its own file.

      EDIT: Maar dat komt natuurlijk omdat ik hem opdrachtE heb genoemd, ik zal in het vervolg rekening houden met CamelCase :)