为了账号安全,请及时绑定邮箱和手机立即绑定

无法解析 Java 中的符号

无法解析 Java 中的符号

倚天杖 2022-07-27 16:12:35
我正在学习Java并尝试编写一个对象来计算人体的BMI。bmi但是有一个错误说在最后一个返回中无法解析符号。想知道为什么不能使用bmi返回的 in以及如何解决类似问题。getBMI()对于另一个问题,我的代码中是否有任何额外或缺失的内容?    public class BMI {        private double height;        private double weight;        private String name;    public BMI(String name, double height, double weight){        this.name = name;        this.height = height;        this.weight = weight;    }    public double getBMI(){         double bmi = weight/(height*height);         return bmi;    }    @Override    public String toString(){         return name + " is " + height + "m tall and is " + weight + "Kg and has a BMI of " + bmi + "Kg/m^2";    }}
查看完整描述

3 回答

?
月关宝盒

TA贡献1772条经验 获得超5个赞

bmi中找不到toString()。尝试这个,

public String toString(){
     return name + " is " + height + "m tall and is " + weight + "Kg and has a BMI of " + getBMI() + "Kg/m^2";
     }


查看完整回答
反对 回复 2022-07-27
?
牛魔王的故事

TA贡献1830条经验 获得超3个赞

您在方法中声明的变量只能在同一方法中使用,不能在该方法之外的任何地方使用,这个概念称为scope. {要以最简单的方式理解这一点,请尝试在您声明变量的地方找到最近的“开括号” 。并且您可以在括号关闭之前的任何地方使用该变量。


在您的情况下,您已经在方法内部声明了bmi变量getBMI(),因此您可以在同一方法中的任何地方使用该变量,但在它之外的任何地方都不能使用该变量,并且您尝试在toString()无法访问它的方法中使用它,因此您得到了错误


cannot resolve symbol bmi

要解决此问题,您可以使用以下两种方法中的任何一种


1] 调用中的getBMI()方法toString() 我会推荐这种方法,因为getBMI()它返回双精度,所以让我们利用它并在需要使用的值的任何地方直接调用它bmi。


@Override

public String toString(){

     return name + " is " + height + "m tall and is " + weight + "Kg and has a BMI of " + getBMI() + "Kg/m^2";

}

更新


根据保罗的建议


2] 在这个场景中不推荐,但是你可以在很多其他场景中使用它,bmi在BMI类中定义全局变量,稍后当你在构造函数中为它赋值时,你可以在同一个类中的任何地方使用该变量,你可以在构造函数本身中应用公式。在这种情况下,您的代码将如下所示


public class BMI {

    private double height;

    private double weight;

    private String name;

    private double bmi;


    public BMI(String name, double height, double weight) {

        this.name = name;

        this.height = height;

        this.weight = weight;

        this.bmi = weight / (height * height);

    }


    @Override

    public String toString() {

        return name + " is " + height + "m tall and is " + weight + "Kg and has a BMI of " + bmi + "Kg/m^2";

    }

}


查看完整回答
反对 回复 2022-07-27
?
慕标5832272

TA贡献1966条经验 获得超4个赞

另一种方法是


public class BMI {

    private double height;

    private double weight;

    private String name;

    private double bmi;


    public BMI(String name, double height, double weight){

        this.name = name;

        this.height = height;

        this.weight = weight;

        this.bmi = weight/(height*height);

    }


    public double getBMI(){

         return bmi;

    }

    @Override

    public String toString(){

         return name + " is " + height + "m tall and is " + weight + "Kg and has a BMI of " + bmi + "Kg/m^2";

    }

}


查看完整回答
反对 回复 2022-07-27
  • 3 回答
  • 0 关注
  • 311 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号