Op deze website gebruiken we cookies om content en advertenties te personaliseren, om functies voor social media te bieden en om ons websiteverkeer te analyseren. Ook delen we informatie over uw gebruik van onze site met onze partners voor social media, adverteren en analyse. Deze partners kunnen deze gegevens combineren met andere informatie die u aan ze heeft verstrekt of die ze hebben verzameld op basis van uw gebruik van hun services. Meer informatie.

Akkoord

Vraag & Antwoord

Programmeren

Rare foutmelding door if-statement in Java

marientje
1 antwoord
  • Hallo,

    Ik ben bezig om Java te leren op school, ik zit nu nog in de begin fase. We hebben per hoofdstuk allemaal opdracht enzo die de leraar zelf gemaakt heeft, maar nu kom ik bij een opdracht waar ik dus niet uitkom. Deze code werd al gegeven:

    [code:1:2536117ba7]

    import javax.swing.*;
    public class Som
    {
    public static void main(String[] args)
    {
    int som=0;// som van de getallen initieel nul
    String input="";//invoer getal initieel lege regel
    int g1;// rekenwaarde getal
    // voor de while eerst g1 contole variabele lezen.
    input=JOptionPane.showInputDialog(null,"geef een geheel getal",
    "negatief getal stopt de invoer",JOptionPane.QUESTION_MESSAGE);
    g1=Integer.parseInt(input);
    // nu mogen we starten met de while: tel even getal bij som
    // en lees een nieuw getal
    // indien sentinel dan breekt de lus af en wordt som afgedrukt.
    while (g1>0)
    {
    // nu geen break meer maar alleen even getallen optellen
    if (g1%2==0) som+=g1;

    input=JOptionPane.showInputDialog(null,"geef een geheel getal",
    "negatief getal stopt de invoer",JOptionPane.QUESTION_MESSAGE);
    g1=Integer.parseInt(input);

    }

    JOptionPane.showMessageDialog(null,""+som,"De som is",JOptionPane.INFORMATION_MESSAGE);// som weergeven
    System.exit(0);
    }
    }
    [/code:1:2536117ba7]

    En nu was de opgave hierbij:

    [quote:2536117ba7]
    Breng in Som de controle op geheel getal aan. Het programma leest een String en die wordt op een double vertaalt. Daarna wordt gecontroleerd of er cijfers achter de komma voorkomen Indien dit zo is wordt dit gemeld en een nieuw getal gevraagd.
    [/quote:2536117ba7]

    Leek me eigenlijk niet zo heel moeilijk. Dit is de code die ik ervan heb gemaakt:


    [code:1:2536117ba7]
    import javax.swing.*;

    public class Som
    {
    public static void main(String[] args)
    {
    int som=0;// som van de getallen initieel nul
    String input="";//invoer getal initieel lege regel
    double g1;// rekenwaarde getal
    // voor de while eerst g1 contole variabele lezen.
    input=JOptionPane.showInputDialog(null,"geef een geheel getal",
    "negatief getal stopt de invoer",JOptionPane.QUESTION_MESSAGE);
    g1=Double.parseDouble(input);
    if ((g1%1)!=0)
    JOptionPane.showMessageDialog(null, "Het getal dat u heeft ingevoerd is niet geheel!", "Niet geheel", JOptionPane.INFORMATION_MESSAGE);
    // nu mogen we starten met de while: tel even getal bij som
    // en lees een nieuw getal
    // indien sentinel dan breekt de lus af en wordt som afgedrukt.
    while (g1>0)
    {
    // nu geen break meer maar alleen even getallen optellen
    if (g1%2==0) som+=g1;

    input=JOptionPane.showInputDialog(null,"geef een geheel getal",
    "negatief getal stopt de invoer",JOptionPane.QUESTION_MESSAGE);
    g1=Integer.parseInt(input);

    }

    JOptionPane.showMessageDialog(null,""+som,"De som is",JOptionPane.INFORMATION_MESSAGE);// som weergeven
    System.exit(0);
    }
    }
    [/code:1:2536117ba7]

    Als ik hem nu ga runnen geeft hij netjes aan dat het geen geheel getal is, maar als ik het nu nog een keer doe komt hij ineens met een rare foutmelding. Dus hij zegt maar 1 keer dat ik een geheel getal moet invoeren en als ik daarna nog een keer geen geheel getal invoer geeft hij deze melding:

    [quote:2536117ba7]
    Exception in thread "main" java.lang.NumberFormatException: For input string: "6.5"

    at java.lang.NumberFormatException.forInputString(NumerFormatException.java:48)
    at java.lang.Integer.parseInt(Integer.java:477)
    at java.lang.Integer.parseInt(Integer.java:518)
    at Som.main(Som.java:35)
    [/quote:2536117ba7]

    Zou iemand misschien weten wat ik verkeerd doe..

    Alvast bedankt,
    Richi

Beantwoord deze vraag

Dit is een gearchiveerde pagina. Antwoorden is niet meer mogelijk.