为什么我在源代码中有inputMismatchException?

时间:2011-09-18 12:54:56

标签: java math

为什么我有inputMismatchException? 当输入只是整数时,结果会很好,但是当我使用双输入时,编译器抛出一个inputMismatchException。

public static void main(String[] args) {
    // TODO Auto-generated method stub
    // Help by Sahil Muthoo
    System.out.println("Enter the radius and length of a cylinder:");
    Scanner sc = new Scanner(System.in);
    Pattern newlineOrSpace = Pattern.compile(System.getProperty("line.separator") + "|\\s");
    sc.useDelimiter(newlineOrSpace);
    double radius=sc.nextDouble();
    double length=sc.nextDouble();
    double area= radius*radius*Math.PI;
    double volume=area*length;
    System.out.println("The area is " + area);
    System.out.println("The volume is " + volume);
}

例如输入:3 5它会很好。

例如输入:3.3 5它将抛出inputMismatchException

2 个答案:

答案 0 :(得分:2)

你试过用,而不是。?喜欢3,5而不是3.5?这解决了我。

答案 1 :(得分:1)

您似乎使用了错误的语言环境。如果您没有明确告诉JVM使用哪个语言环境来解释浮点输入,它将使用您系统的(JVM)默认语言环境。

将语言环境明确设置为美国格式:

public static void main(String[] args) {
    Locale.setDefaultLocale(Locale.US);
    ...

我将问题重现如下:

  1. 将默认语言环境设置为GERMANY(小数分隔符为逗号),输入3,5有效,但3.5没有。
  2. 将默认语言环境设置为US(小数分隔符为点),输入3.5有效,但3,5没有。
  3. 由于这是家庭作业,你应该回到你的教授,并要求澄清多语言要求: - )