Java - 转换int number

时间:2016-11-14 08:37:37

标签: java int double numberformatexception

我想做什么:

我制作了BMI计算器(公式=(KG * KG)/ M) 输入需要例如186,但插入1.86(高度以米为单位)时出现错误

java.lang.NumberFormatException: For input string: "1.86"

这是我的代码:

    if (txtHeight.getText().length() > 0 && txtWeight.getText().length() > 0){
        height = Integer.parseInt(txtHeight.getText());
        heightsqr = (int) Math.pow(height, 2);
        mass = Integer.parseInt(txtWeight.getText());
        bmi = (heightsqr/ mass);
        lblBmi.setText("Current BMI : " + Integer.toString(bmi));
        }
        else{
            JOptionPane.showMessageDialog(this, "Please enter your weight in KG and your Height in M");
        }

这是一个非常基本的错误,我似乎无法修复

3 个答案:

答案 0 :(得分:1)

正如stacktrace所述,您无法将1.86转换为int。为什么?因为它是double

尝试:

mass = Double.parseDouble(txtWeight.getText());

在Java中,我们有类型。 int只能存储整数。实数可以存储在floatdouble中,但请记住,您可能会失去精确度

我不知道你的整个代码,所以我无法告诉你,mass的类型是什么。如果您的代码中有以下内容:

int mass;

将其更改为:

double mass;

一些随意的想法:
正如您已经看到的那样,Exception可能会被抛出。它发生取决于我相信的用户输入。在Java中,我们有一种安全机制。它是try-catch块。例如,它可以用于以下方式:

try {
    mass = Double.parseDouble("1,86");
} catch (NumberFormatException e) {
    //somehow notify user that he has mistaken and work it out according to your business logic.
}

我强烈建议您阅读我在StackOverflow问题What is a NumberFormatException and how can I fix it上提供的 this教程

答案 1 :(得分:0)

Integer是非十进制值,因此1.86无效。

尝试将其转换为DoubleDouble.parseDouble(txtHeight.getText());

答案 2 :(得分:-1)

您尝试将double转换为int。那导致错误。如果你想修复它,你应该只接受整数或只接受双打。否则你需要2个if语句。转换为double看起来像这样:height = Double.parseDouble(txtHeight.getText());