gpt4 book ai didi

java - 在Java中使用input.nextDouble时出错

转载 作者:行者123 更新时间:2023-12-02 01:15:07 24 4
gpt4 key购买 nike

我是 Java 初学者,我正在尝试用 Java 制作一个简单的 BMI 计算器(以米和公斤为单位)。每当我将我的高度作为双输入输入时,我都会收到错误:

Exception in thread "main" java.util.InputMismatchException
at java.util.Scanner.throwFor(Unknown Source)
at java.util.Scanner.next(Unknown Source)
at java.util.Scanner.nextDouble(Unknown Source)
at ui.BMI_Calculator.main(BMI_Calculator.java:15)

代码:

package ui;

import java.util.Scanner;

public class BMI_Calculator {

public static void main(String[] args)
{

double height, weight;

Scanner input = new Scanner(System.in);

System.out.printf("Give height (in metres): ");
height = input.nextDouble();

System.out.printf("%nGive weight (in kilograms): ");
weight = input.nextDouble();


double BMI = weight / (height * height);

System.out.printf("%nBMI = %d", BMI);

input.close();
}

}

最佳答案

我在在线 IDE 上测试了你的代码并且它有效,然后我在我的机器上测试并得到了与你相同的错误,然后我再次测试,但使用逗号 (,) 而不是点 (.) 作为小数点,并且成功了。抛出InputMismatchException是因为Scanner对象使用JVM的默认Locale来解析输入值,当与预期不同时会引发异常。

您可以将区域设置传递给使用 .作为小数点分隔符:

input.useLocale(Locale.US);

或者在输入值时仅使用 (,)。

此外,您的代码中最后一个 printf 中还有另一个错误:

 System.out.printf("%nBMI = %d", BMI);

您应该使用 %f 来表示浮点,而不是使用 %d(用于整数)。您可以在下面的 documentation 中找到有关如何格式化数字输出的更多信息。 .

关于java - 在Java中使用input.nextDouble时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58772710/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com