Nieuws:

Welkom, Gast. Alsjeblieft inloggen of registreren.
Heb je de activerings-mail niet ontvangen?

Auteur Topic: [OPGELOST] JAVA: .nextDouble geeft error, integer niet  (gelezen 867 keer)

[OPGELOST] JAVA: .nextDouble geeft error, integer niet
« Gepost op: 2012/12/19, 19:19:35 »
Ergens zal ik wel weer iets fout doen, maar op dit moment zie ik het niet. Ik ben weer opnieuw begonnen met het aanleren van JAVA, maar ik ben nu al vastgelopen met de scanner.

import java.util.Scanner;

public class apples {
public static void main(String args[]){
Scanner cheese = new Scanner(System.in);
double fnum, snum, answer;
System.out.println("enter furst number:");
fnum = cheese.nextDouble();
System.out.println("enter scnd number:");
snum = cheese.nextDouble();
answer = fnum + snum;
System.out.println(answer);
}
}
Dit lijkt eerst goed te lopen, totdat je een kommagetal in vult:
Exception in thread "main" java.util.InputMismatchException
at java.util.Scanner.throwFor(Scanner.java:857)
at java.util.Scanner.next(Scanner.java:1478)
at java.util.Scanner.nextDouble(Scanner.java:2404)
at apples.main(apples.java:10)
Het opmerkelijke is dat een geheel getal gewoon goed werkt, en het antwoord komt er dan uit rollen als bijv. 22.0

Wie weet wat er mis gaat?
« Laatst bewerkt op: 2012/12/19, 21:51:50 door Cheap Applications »
Desktop:
Processor: Intel® Core™2 Quad CPU Q8300 @ 2.50GHz × 4, Geheugen: 3.9Gb, GPU: nVidia 220GT OS: Windows 7 64 bit / Ubuntu 12.04 64 bit
Notebook:
Processor: Intel® Core™ i7-4700MQ, Geheugen: 8Gb, GPU: nVidia GTX765m (met Optimus) OS: Windows 8 64 bit / Elementary OS Luna 64 bit

Offline axelv

  • Lid
Re: JAVA: .nextDouble geeft error, integer niet
« Reactie #1 Gepost op: 2012/12/19, 21:12:58 »
Hoogstwaarschijnlijk omdat je een komma typt voor een komma-getal, in plaats van een punt. M.a.w. 4,5 werkt niet, 4.5 wel...

Re: JAVA: .nextDouble geeft error, integer niet
« Reactie #2 Gepost op: 2012/12/19, 21:51:36 »
Hartelijk dank, daar lag inderdaad het probleem. Ik word af en toe echt helemaal panisch van het omgekeerde punten en komma systeem in Nederland. Ik heb meer dan 3 jaar wiskunde in het Engels gehad en vervolgens ook overgestapt op Nederlands wiskunde en ik heb hier nog steeds last van. Die verdomde Nederlanders ook met die gekke regels :rolleyes:
Maar goed, ik moet inderdaad i.p.v. een puntgetal een kommagetal gebruiken. Het vervelende is dat ik meestal het num-pad gebruik en daar zit alleen de punt. Maar goed, probleem gevonden, hartelijk bedankt!
Desktop:
Processor: Intel® Core™2 Quad CPU Q8300 @ 2.50GHz × 4, Geheugen: 3.9Gb, GPU: nVidia 220GT OS: Windows 7 64 bit / Ubuntu 12.04 64 bit
Notebook:
Processor: Intel® Core™ i7-4700MQ, Geheugen: 8Gb, GPU: nVidia GTX765m (met Optimus) OS: Windows 8 64 bit / Elementary OS Luna 64 bit

Re: [OPGELOST] JAVA: .nextDouble geeft error, integer niet
« Reactie #3 Gepost op: 2012/12/20, 13:07:35 »
Alle landen gebruiken een komma als decimaalscheiding, behalve China, India, Japan en de Engelstalige landen. Dus het is meer een kwestie van 'die Amerikanen met die gekke regels.'

Hoe het precies moet in Java weet ik niet, maar misschien kun je de invoer afvangen en komma's vervangen door punten. Dan treedt dat probleem ook niet meer op.
NOBODY expects the Spanish Inquisition!

Re: [OPGELOST] JAVA: .nextDouble geeft error, integer niet
« Reactie #4 Gepost op: 2013/01/04, 14:53:57 »
Ik heb overigens een andere manier gevonden: cheese.useLocale(Locale.US); na het declareren van de scanner zetten.
Natuurlijk dan niet vergeten om java.util.Locale te importeren ;)
Desktop:
Processor: Intel® Core™2 Quad CPU Q8300 @ 2.50GHz × 4, Geheugen: 3.9Gb, GPU: nVidia 220GT OS: Windows 7 64 bit / Ubuntu 12.04 64 bit
Notebook:
Processor: Intel® Core™ i7-4700MQ, Geheugen: 8Gb, GPU: nVidia GTX765m (met Optimus) OS: Windows 8 64 bit / Elementary OS Luna 64 bit