我已经查看了一些问题,但我似乎无法找到任何好的解决方案。
我有一个非常简单的代码,它只是不起作用。它应该得到用户的体重和身高,然后计算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("");
}
}
答案 0 :(得分:1)
在三种情况下可能发生错误
1)您可能提供了错误的输入格式(而不是双倍)。尝试以双重输入
2)您可能需要将useLocale与扫描仪类
一起使用try-catch
3)您也可以使用try {
// ...Your code
} catch (InputMismatchException ime) {
obj.next();
}
来处理错误
package.json
答案 1 :(得分:1)
输入不匹配异常是因为您的输入与预期输入的类型不同。您可以放置while循环并检查输入hasNextDouble()
是否始终有效:
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("");
}
答案 2 :(得分:0)
原因您收到错误[例外] :
当您需要输入Double,int并输入String时,会发生此异常并停止您的程序。
您可以使用一个Scanner
获得输入,只有您可以再次重复使用一个Scanner
,而无需再创建Scanner
的另一个对象。就像我使用的那样
注意强> 由于初学者级别而未解释异常处理。如果问题随时可以提出,我建议您先自己学习。
示例当我收到InputMismatchException
当我收到与您相同的错误时的情况。
答案 3 :(得分:0)
好像你输入的不是数字。当您使用 nextDouble 时,这意味着您只能输入数字,而不是字符串。我希望这会有所帮助。您可以使用try-catch以避免错误。