Java-转换整数
我想做的是: 我做了一个体重指数计算器(公式=(KG*KG)/M) 输入值为eg 186,但插入1.86时出错(高度单位为米)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
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.
}