Java 无法取消引用bmi计算器错误浮动

Java 无法取消引用bmi计算器错误浮动,java,Java,我正在制作一个简单的体重指数计算器,带有一个单独的主测试。当我试图编译时,我一直收到一条“float不能被取消引用”的消息。我对编码比较陌生,我做错了什么 public class BMI { private String name; private static float height; //meters private static float mass; //kilograms public BMI(String n, float h, float m)

我正在制作一个简单的体重指数计算器,带有一个单独的主测试。当我试图编译时,我一直收到一条“float不能被取消引用”的消息。我对编码比较陌生,我做错了什么

public class BMI {
    private String name;
    private static float height; //meters
    private static float mass; //kilograms

    public BMI(String n, float h, float m) {
        name = n;
        height = h;
        mass = m;
    }

    public static float getBMI() {
        return (mass / height.pow(2));
    }

    public String toString() {
        return (name + "is" + height + "tall and is " + mass + "and has a BMI of" + getBMI());
    }
}

您不能说
height.pow(2)
(因为
float
是一个原语,而且该功能在实用程序类中)。你可以像

使用简单乘法(因为n2==n*n)

另外,在
toString
中,我更喜欢创建许多临时
字符串,我建议您使用
@Override
注释来提供额外的编译时安全性。大概

@Override
public String toString() {
    return String.format("%s is %.2f tall, has mass of %.2f "
            + "and a BMI of %.2f", name, height, mass, getBMI());
}
和字段不应是静态的 几乎可以肯定


因为否则它们是全局的(在任何数量的
BMI
实例中只支持一个高度和一个质量)。

float
不是对象,甚至它的对象对应物
float
也不知道这种方法
pow()。
试试。

高度。功率(2)
?甚至
Float
也没有这样的方法。相关:您可能不想将高度和质量声明为
静态<代码>静态表示所有
BMI`对象共享相同的高度值和质量值。
return (mass / (height * height));
@Override
public String toString() {
    return String.format("%s is %.2f tall, has mass of %.2f "
            + "and a BMI of %.2f", name, height, mass, getBMI());
}
private static float height; //meters
private static float mass; //kilograms
private float height; //meters
private float mass; //kilograms