nextDouble () throws an InputMismatchException when entering a double

import java.util.*; class Averager { public static double unlimited() { int count = 0; double sum = 0; Scanner scan = new Scanner(System.in); while(scan.hasNext()) { double d = scan.nextDouble(); sum += d; count++; } double ave = sum/count; return ave; } public static void main(String[] args) { System.out.println(unlimited()+"\n"); } } 

There is no error when using integers, but if I use numbers with a dot in it, an error appears.

 $ javac Averager.java; java Averager 0.5 Exception in thread "main" java.util.InputMismatchException at java.util.Scanner.throwFor(Scanner.java:840) at java.util.Scanner.next(Scanner.java:1461) at java.util.Scanner.nextDouble(Scanner.java:2387) at Averager.unlimited(Averager.java:12) at Averager.main(Averager.java:21) 

To my best understanding, 0.5 should be covered in double. If not, please can someone correct me.

+6
source share
2 answers

This may be language dependent. Decimal numbers, for example, are written in Sweden as 0.5.

Change your code to indicate, for example:

 Scanner scan = new Scanner(System.in); scan.useLocale(Locale.US); 
+25
source
 This worked for me, changing the locale did not. Scanner sc = new Scanner(System.in); // val = sc.nextDouble(); - crashes with java.util.NoSuchElementException // If Java crashes with legal Java code, wrap the call in a hasNextLine() test if (sc.hasNextLine()) { val = sc.nextDouble(); } 

java.util.NoSuchElementException: row not found

0
source

Source: https://habr.com/ru/post/887565/


All Articles