gpt4 book ai didi

Java 程序在给出小数点时崩溃,但适用于 int

转载 作者:搜寻专家 更新时间:2023-11-01 03:58:16 26 4
gpt4 key购买 nike

当用户输入一个整数时,程序运行流畅,但当用户输入一个末尾有小数的数字时,程序就会崩溃。

这些是我得到的错误:

    at java.lang.NumberFormatException.forInputString(NumberFormatException.java:48)
at java.lang.Integer.parseInt(Integer.java:458)
at java.lang.Integer.parseInt(Integer.java:499)
at BMI.main(BMI.java:11)

这是我的代码:

import javax.swing.*;

public class BMI {
public static void main(String args[]) {
int height; // declares the height variable
int weight; // declares the weight variable
String getweight;
getweight = JOptionPane.showInputDialog(null, "Please enter your weight in Kilograms"); // asks user for their weight
String getheight;
getheight = JOptionPane.showInputDialog(null, "Please enter your height in Centimeters"); // asks user for their height
weight = Integer.parseInt(getweight); // stores their weight
height = Integer.parseInt(getheight); // stores their height
double bmi; // declares the BMI variable
bmi = weight / Math.pow(height / 100.0, 2.0); // calculates the BMI
double roundbmi; // variable to round the BMI to make it more read-able
roundbmi = Math.round(bmi); // rounds the BMI
JOptionPane.showMessageDialog(null, "Your BMI is: " + roundbmi); // displays the calculated and rounded BMI
}
}

最佳答案

Integer 只能识别整数。如果您希望能够捕获 float ,请使用 Float.parseFloat()Double.parseDouble()

为了使答案更完整,让我举一个简单的例子来说明为什么 “4.”“4.0”“4” 以两种不同的方式表示。前两个被认为是浮点值(因为 Java 将假设您的意思是 4.0 无论如何),并且它们在内存中的表示方式在很大程度上取决于您使用哪种数据类型来表示它们 - floatdouble

float 使用 single-precision floating point standard 表示 4.0 ,而 double 将使用 double-precision floating point standard 表示 4.0 . int 表示 base-2 中的值 4(因此它只是 22)。

了解数字的内部存储方式对于开发至关重要,而不仅仅是 Java。通常,建议使用 Double,因为它提供更大范围的 float (和更高的精度)。

关于Java 程序在给出小数点时崩溃,但适用于 int,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8875025/

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