注册 登录
编程论坛 JAVA论坛

Scanner输入数据类型的问题

ankewlin 发布于 2021-03-11 17:55, 8113 次点击
package TaskOfJavabooksCap2;
import java.util.Scanner;

public class areaAndVolumeOfaCylinder {
   
    public static void main(String[] args) {
        
        // create a scanner object
        Scanner input = new Scanner(System.in);
        
        //Prompt user to enter 2 numbers of a cylinder
        System.out.print("Enter the radius and length of a cyllinder ");
        
        double num1 = input.nextDouble();
        double num2 = input.nextDouble();
        
        double area = num1*num1*3.14;
        System.out.println("The area is "+ area);
        System.out.println("The area is "+ area*num2 );
        
    }

}
请问各位大佬们,我这个scanner输入为什么只能针对整数,对于小数就会出现 InputMismatchException
9 回复
#2
ankewlin2021-03-20 18:15
各位大佬帮我看看呗。抱错是从 double num1 = input.nextDouble();开始报错的,搞了几天了也不知道为啥错的。。
#3
linkeryy2021-03-23 10:46
你确定报错吗?我把你的代码完整粘贴下来运行,输入小数可没有报错哦。
#4
ankewlin2021-03-26 23:03
"C:\Program Files\Java\jdk-15.0.2\bin\java.exe" "-javaagent:C:\Program Files\JetBrains\IntelliJ IDEA Community Edition 2020.3.2\lib\idea_rt.jar=58290:C:\Program Files\JetBrains\IntelliJ IDEA Community Edition 2020.3.2\bin" -Dfile.encoding=UTF-8 -classpath C:\Users\Administrator\IdeaProjects\TaskOfJavaBooks\out\production\hellojava TaksOfJavabook.AreaAndVolumenOfaCylinder
Enter the radius and length of a cyllinder 5.5 12.0
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 TaksOfJavabook.AreaAndVolumenOfaCylinder.main(AreaAndVolumenOfaCylinder.java:21)

Process finished with exit code 1

就是这个错误,我一个大佬朋友说我这个可能是IDEA没有配置好的问题。。。
#5
sssooosss2021-03-29 08:35
共同学习
#6
ankewlin2021-04-13 13:17
破案了! 如果确定数据类型没有错误的话可以把ScannerSyntax:
                     Scanner input = new Scanner(System.in);
增添为以下语句:
            Scanner input = new Scanner(System.in).useLocale(Locale.US);
这样应该就不会报错了,这还是俺在Github一个大佬上面看到的解决方法,希望对大家有用。
#7
one7372021-07-04 19:55
是不是打得中文句号。。。
#8
JiaJinz212021-07-15 13:54
我试了一下,没问题啊!
#9
ankewlin2021-07-17 16:29
回复 8楼 JiaJinz21
感觉和电脑某种未知的配置有关,我同学电脑也是没问题的我的就不行。
#10
GSH6872021-11-14 19:06
没问题 如果改为double型的话
1