Java-转换整数

Java-转换整数,java,int,double,numberformatexception,Java,Int,Double,Numberformatexception,我想做的是: 我做了一个体重指数计算器(公式=(KG*KG)/M) 输入值为eg 186,但插入1.86时出错(高度单位为米) java.lang.NumberFormatException:对于输入字符串:“1.86” 这是我的密码: if (txtHeight.getText().length() > 0 && txtWeight.getText().length() > 0){ height = Integer.parseInt(txtH

我想做的是:

我做了一个体重指数计算器(公式=(KG*KG)/M) 输入值为eg 186,但插入1.86时出错(高度单位为米)

java.lang.NumberFormatException:对于输入字符串:“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");
        }

这是一个非常基本的错误,我似乎无法修复。如果你试图将double转换成int,这就是导致错误的原因。如果要修复它,应该只接受整数或双精度。否则,您将需要2个if语句。转换为double如下所示:
height=double.parseDouble(txthheight.getText())

整数是非十进制值,因此1.86无效

尝试将其转换为双精度的

Double.parseDouble(txtHeight.getText())

正如
堆栈跟踪所说,您不能将
1.86
转换为
int
。为什么?因为它是一个

尝试:

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

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

int mass;
将其更改为:

double mass;
一些随意的想法:
正如您已经看到的,有可能会抛出
异常。我相信这取决于用户的输入。在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
问题
上提供的教程,什么是数字格式异常以及如何修复它

可能重复使用double而不是intI我认为您需要对java中的数据类型有一个基本的了解。看看整数可以存储什么以及您有什么选择。使用
Double.parseDouble
而不是
Integer.parseInt
您有
string
中的十进制值,而不是整数。我的回答对您有帮助吗?如果你需要一些澄清,请在评论中询问。谢谢,我想我必须检索用户输入并格式化它,其实很简单。谢谢@JacquesNaudé如果有帮助,请单击答案分数下方的灰色勾号,将其标记为解决方案。再次感谢。也;应该是*bmi=(质量/高度SQR);*而不是*bmi=(高度SQR/质量)*
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.
}