Java - 转换整数
Java - Convert int number
我想做什么:
我做了一个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");
}
这是一个非常基本的错误,我似乎无法修复
您尝试将 double 转换为 int。那是导致错误的原因。如果你想修复它,你应该只接受整数或只接受双精度数。否则你将需要 2 个 if 语句。转换为 double 看起来像这样:height = Double.parseDouble(txtHeight.getText());
Integer
是非十进制值,因此 1.86 无效。
尝试将其转换为 Double
:
Double.parseDouble(txtHeight.getText());
正如 stacktrace
所说,您无法将 1.86
转换为 int
。为什么?因为它是 double
.
尝试:
mass = Double.parseDouble(txtWeight.getText());
在Java中,我们有类型。 int
只能存储整数。实数可以存储在 float
和 double
中,但请记住,你可能会失去精度。
我不知道你的整个代码,所以我不能告诉你,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.
}
我强烈建议阅读我在 Whosebug
问题 What is a NumberFormatException and how can I fix it
上提供的 this 教程 。
我想做什么:
我做了一个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");
}
这是一个非常基本的错误,我似乎无法修复
您尝试将 double 转换为 int。那是导致错误的原因。如果你想修复它,你应该只接受整数或只接受双精度数。否则你将需要 2 个 if 语句。转换为 double 看起来像这样:height = Double.parseDouble(txtHeight.getText());
Integer
是非十进制值,因此 1.86 无效。
尝试将其转换为 Double
:
Double.parseDouble(txtHeight.getText());
正如 stacktrace
所说,您无法将 1.86
转换为 int
。为什么?因为它是 double
.
尝试:
mass = Double.parseDouble(txtWeight.getText());
在Java中,我们有类型。 int
只能存储整数。实数可以存储在 float
和 double
中,但请记住,你可能会失去精度。
我不知道你的整个代码,所以我不能告诉你,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.
}
我强烈建议阅读我在 Whosebug
问题 What is a NumberFormatException and how can I fix it
上提供的 this 教程 。