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");
}
}
使用整数时没有错误,但是如果我使用带有点的数字则会出现错误。
$ 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)
据我所知,0.5应该用双倍覆盖。如果没有,请有人纠正我。
答案 0 :(得分:25)
它可能依赖于语言环境。十进制数字例如在瑞典写为0.5。
更改您的代码,例如:。
Scanner scan = new Scanner(System.in);
scan.useLocale(Locale.US);
答案 1 :(得分:0)
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();
}