Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/358.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/15.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.util.InputMismatchException。扫描器类_Java - Fatal编程技术网

“线程中的异常”;“主要”;java.util.InputMismatchException。扫描器类

“线程中的异常”;“主要”;java.util.InputMismatchException。扫描器类,java,Java,我已经看了一些问题,但似乎找不到任何好的解决办法 我有一个非常简单的代码,就是无法工作。它应该得到用户的体重和身高,然后计算BMI 每次我输入的值都不一样。 但假设变量vikt为85,变量langd为1.80。 当我使用a而不是a时,它确实起作用。不过。 我得到以下错误 Exception in thread "main" java.util.InputMismatchException at java.util.Scanner.throwFor(Scanner.java:864)

我已经看了一些问题,但似乎找不到任何好的解决办法

我有一个非常简单的代码,就是无法工作。它应该得到用户的体重和身高,然后计算BMI

每次我输入的值都不一样。 但假设变量vikt为85,变量langd为1.80。 当我使用a而不是a时,它确实起作用。不过。 我得到以下错误

Exception in thread "main" java.util.InputMismatchException
    at java.util.Scanner.throwFor(Scanner.java:864)
    at java.util.Scanner.next(Scanner.java:1485)
    at java.util.Scanner.nextDouble(Scanner.java:2413)
    at Labb2.BMI.main(BMI.java:32)
C:\Users\Danne\AppData\Local\NetBeans\Cache\8.2\executor-snippets\run.xml:53: Java returned: 1
BUILD FAILED (total time: 5 seconds)
我使用的代码如下:

package Labb2;

import java.util.Scanner;

public class BMI {

    public static void main(String[] args) {

        Scanner viktObj = new Scanner(System.in);
        Scanner langdObj = new Scanner(System.in); 

        double vikt;
        double langd;
        double bmi;

        System.out.print("Ange din vikt: ");
        vikt = viktObj.nextDouble();

        System.out.print("Ange din längd i meter (ex. 1.70): ");
        langd = langdObj.nextDouble();

        bmi = vikt / (langd * langd);
        System.out.printf("Ditt BMI är: %.2f", bmi);
        System.out.println("");


    }

}

错误可能发生在三种情况下

1) 您可能给出了错误的输入格式(而不是双精度)。尽量用双精度输入

2) 您可能需要将useLocale与scanner类一起使用

Scanner scanner = new Scanner(System.in).useLocale(Locale.US);
3) 您还可以使用
try catch
通过

try {
    // ...Your code
} catch (InputMismatchException ime) {
    obj.next();  
}

输入不匹配异常是因为您的输入与预期输入的类型不同。您可以将while循环放入并检查输入
是否具有nextdouble()
,以使其始终工作:

public static void main(String[] args) {
        // TODO code application logic here
        Scanner viktObj = new Scanner(System.in);

        double vikt;
        double langd;
        double bmi;

        System.out.print("Ange din vikt: ");
        while(!viktObj.hasNextDouble()){
        System.out.println("Wrong input... please enter again!");
            viktObj.next();
        }
        vikt = viktObj.nextDouble();

        System.out.print("Ange din längd i meter (ex. 1.70): ");
        while(!viktObj.hasNextDouble()){
        System.out.println("Wrong input... please enter again!");
            viktObj.next();
        }
        langd = viktObj.nextDouble();

        bmi = vikt / (langd * langd);
        System.out.printf("Ditt BMI är: %.2f", bmi);
        System.out.println("");




    }

出现错误的原因[异常]

当需要输入Double、int和String thn时,会发生此异常并停止程序。 您可以使用一个
扫描仪
获取输入,但您可以反复使用一个
扫描仪
,无需再制作另一个
扫描仪的对象

注意 由于初学者级别,未解释异常处理。如果有问题可以问的话,我建议先自己学习。

获取
输入不匹配异常时的示例

当我和你一样犯同样的错误时


看起来您输入的不是数字。当您使用nextDouble时,这意味着您只能输入数字,而不能输入字符串。我希望这能有所帮助。您可以使用try-catch来避免错误。

它适合我。你提供了什么价值观?顺便说一句,你不需要两个扫描仪。使用其中一个从控制台读取所有数据。首先,您不需要两个单独的扫描仪对象来读取用户的输入,一个就足够了。您收到的错误是因为您输入的数字不是双精度值。请发布并显示导致此异常的输入数据。这可能是区域设置问题吗?我的意思是,你正在使用。还是小数点?您的输入是什么样子的?当我使用a而不是a时,我的代码会工作。实际上。。为什么会这样?