Java 无法取消引用bmi计算器错误浮动
我正在制作一个简单的体重指数计算器,带有一个单独的主测试。当我试图编译时,我一直收到一条“float不能被取消引用”的消息。我对编码比较陌生,我做错了什么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)
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