2012-07-20 113 views
1

我想问为什么我得到一个InputMismathExceptionInputMismatchException

我已宣布double类型的变量,当我分配给它一个点的值,例如(4.6)它抛出我:

Exception in thread "main" java.util.InputMismatchException 
    at java.util.Scanner.throwFor(Scanner.java:909) 
    at java.util.Scanner.next(Scanner.java:1530) 
    at java.util.Scanner.nextDouble(Scanner.java:2456) 
    at Exercises.ComputingMeanAndStandartDeviation_5_21.main(ComputingMeanAndStandartDeviation_5_21.java:18) 

下面是代码:

package Exercises; 

import java.util.*; 

public class ComputingMeanAndStandartDeviation_5_21 
{ 

    public static void main(String[] args) 
    { 
     Scanner input = new Scanner(System.in); 

     double sum = 0; 
     double number = 1; 
     double counter = 1; 
     System.out.println("Enter ten numbers: "); 
     while(counter<10) 
     { 
      number = input.nextDouble(); 
      sum +=number; 
      counter ++; 
     } 

     System.out.println(sum + " " + number + " " + counter); 
     double mean = sum/counter; 
     System.out.println("The mean is: " + mean); 
    } 

} 
+1

您的输入是什么? – nhahtdh 2012-07-20 16:56:07

+0

你'Scanner'对象期待阅读'double',但实际上是看到的东西,你不能转换成'double' – 2012-07-20 16:56:24

+0

对于下面的输入 – 2012-07-20 16:57:17

回答

2

在语言环境问题

Locale.setDefault(Locale.US); 
Scanner input = new Scanner(System.in); 

美国小数分隔符 “ ”(78.12),而不是“,”(78,12)

+0

是的,好友,你是对的。我以前玩的地方,它现在正在工作干杯队友 – 2012-07-20 17:04:15

+0

很好的答案,但你的意思是美国小数(不是分隔符)? – 2012-07-20 17:05:12