Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/339.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 输入不匹配异常_Java_Exception_Input_Mismatch - Fatal编程技术网

Java 输入不匹配异常

Java 输入不匹配异常,java,exception,input,mismatch,Java,Exception,Input,Mismatch,当我输入整数如5、7、14等时,一切都正常。但是当我输入例如7.5时,我得到一个错误。错误在哪里 Exception in thread "main" java.util.InputMismatchException at java.base/java.util.Scanner.throwFor(Scanner.java:939) at java.base/java.util.Scanner.next(Scanner.java:1594)

当我输入整数如5、7、14等时,一切都正常。但是当我输入例如7.5时,我得到一个错误。错误在哪里

    Exception in thread "main" java.util.InputMismatchException
    at java.base/java.util.Scanner.throwFor(Scanner.java:939) 
    at java.base/java.util.Scanner.next(Scanner.java:1594) 
    at java.base/java.util.Scanner.nextDouble(Scanner.java:2564) 
    at Exercise_11.main(Exercise_11.java:8)
代码如下:

    import java.util.Scanner;
    public class Exercise_11 {
    public static void main(String[] args) {
    Scanner radius = new Scanner(System.in);
    System.out.print("Please input the radius of circle: ");
    double r= radius.nextDouble();
    double l= 2*Math.PI*r;
    double s= Math.PI*r*r;
    System.out.println("Length = " + l);
    System.out.println("Area = " + s);
    }
    }


您的系统区域设置不支持将点作为十进制分隔符。使用支持点作为分隔符的区域设置,例如
locale.ENGLISH

Scanner radius = new Scanner(System.in).useLocale(Locale.ENGLISH);
运行示例:

Please input the radius of circle: 7.5
Length = 47.12388980384689
Area = 176.71458676442586

嗯,上面的代码对我来说很有用。如果你把7.5放进去,它看起来工作得很好,因为should@APaul不,如果我输入两个数字,它就不起作用了。我添加了屏幕截图,您现在可以检查您正在使用的系统,其中区域设置指定了
是十进制分隔符。试试看
7,5
@ElliottFrisch。。我的系统上的小数点分隔符是“点”,但我按你说的做了。它起作用了。为什么?请看第一个屏幕截图,系统还使用点“.”分隔数字。感谢您的帮助。奇怪。。。。我的系统上的小数点分隔符是“点”,但我按你说的做了。它起作用了。为什么?请看第一个屏幕截图,系统也使用点“.”来分隔数字。您是否在应用程序中的某个位置设置了区域设置,如
locale.setDefault(…)
?在您的注释之后,我设置了,这是确定的。工作但在我的计算机设置中,分隔符不是“,”。我确信我经常使用它。在不使用代码的情况下,执行
System.out.println(radius.locale()),它将显示JVM默认使用的语言环境。az_az#Latn。。。。理解。非常感谢你。非常感谢。我学到了很多!万岁!