Java 返回相同变量的两个get方法
我的第一个get方法应该根据体重指数返回某人是体重不足、正常体重、超重还是肥胖 我希望第二个get方法能够从第一个get方法返回相同的变量“category”(因此无论答案是什么,体重不足、正常体重等等),而不需要在主方法中调用时在括号中输入双精度 仅仅是一些背景,我在main中创建了people对象,并给它们提供了信息(姓名、身高、体重、BMI、类别),然后将所有这些人放入一个数组列表中。这就是我打电话的原因 我可以调用除category之外的所有东西,category返回“null”。我假设它是因为我的第二个get方法没有任何数据分配给它。但是我不知道如何让它从上面的get方法返回变量,或者如果这不是正确的方法,我应该考虑其他方法 如有任何帮助或建议,将不胜感激。如果有什么不合理的地方或者你需要更多的代码,请告诉我Java 返回相同变量的两个get方法,java,getmethod,Java,Getmethod,我的第一个get方法应该根据体重指数返回某人是体重不足、正常体重、超重还是肥胖 我希望第二个get方法能够从第一个get方法返回相同的变量“category”(因此无论答案是什么,体重不足、正常体重等等),而不需要在主方法中调用时在括号中输入双精度 仅仅是一些背景,我在main中创建了people对象,并给它们提供了信息(姓名、身高、体重、BMI、类别),然后将所有这些人放入一个数组列表中。这就是我打电话的原因 我可以调用除category之外的所有东西,category返回“null”。我假设
public String getCategory(double bmi) {
if (bmi < 18.5) {
category = "UNDERWEIGHT";
} else if ((bmi > 18.5) && (bmi < 25)) {
category = "NORMAL WEIGHT";
} else if ((bmi > 25) && (bmi < 30)) {
category = "OVERWEIGHT";
} else if (bmi > 30) {
category = "OBESE";
}
return category;
}
public String getCategory() {
return category;
}
返回“null”为了返回类别,方法需要知道BMI。如果在调用第二个方法之前调用第一个方法,那么您已经提供了BMI。但是如果你先调用第二个方法,它就没有办法知道了
一般来说,让get方法改变对象的状态被认为是不好的形式。您可能会考虑使用一个存储BMI的StBMI(双BMI)方法,并可能同时计算类别。调用此函数后,不带参数的getCategory()方法将有一些东西可以使用。在代码中使用此代码段,而不是
public String getCategory()
{
return category;
}
修改代码--->
我可以看到两个问题
String getCategory()
可能返回您显示的this.category
,和getCategory(double bmi)
category
存储为字段(如果未初始化,则该字段将为空,这就是您正在打印的内容),因为它是基于bmi
值动态计算的
相反,您应该将BMI存储为Person
类中的double
值(如果您还没有),然后您可以这样(粗略地)定义您的Person类
创造一个人
Person cricket_007 = new Person();
cricket_007.setBmi(20); // Maybe this is right? :)
打印出来
System.out.println(cricket_007.getCategory()); // NORMAL
您的
Person
类应该有一个名为bmi
因此,对象andrewsInfo、boydsInfo等
将包含其不同的值
然后在Person
类中,您可以使用该方法
public String getCategory() {
if (this.bmi <= 18.5) {
category = "UNDERWEIGHT";
} else if ((this.bmi > 18.5) && (this.bmi <= 25)) {
category = "NORMAL WEIGHT";
} else if ((this.bmi > 25) && (this.bmi <= 30)) {
category = "OVERWEIGHT";
} else if (this.bmi > 30) {
category = "OBESE";
}
return category;
}
公共字符串getCategory(){
如果(本bmi 18.5)和(本bmi 25)和(本bmi 30){
类别=“肥胖”;
}
退货类别;
}
如果BMI==18.5或25或30怎么办?如果bmi正好为18.5、25或30,则对那些if语句使用正确的条件您没有值。如果你简化了你的代码,你就可以避免你处理的值中的这些漏洞。还有,你有重载的方法吗?你展示的那个值是双倍的,但是你说的打印空值不是我没意识到我漏掉了那些数字,这是我的疏忽,谢谢你抓住了!您错过了return语句,但尽管这可能有效,但它完全不可用我编写的代码是正确的,我们需要一个带bmi参数的方法从无参数构造函数调用。我建议您浏览构造函数类。实际上,不,这是不正确的String getCategory
没有return
很好的解释-比只吐代码要好得多。@Mogsdad-谢谢!我会尽可能经常来这里
public class Person {
private double bmi;
public void setBmi(double bmi) {
this.bmi = bmi;
}
public String getCategory() {
if (bmi >= 30) {
return "OBESE";
} else if (bmi >= 25) {
return "OVERWEIGHT";
} else if (bmi >= 18.5) {
return "NORMAL";
} else {
return "UNDERWEIGHT";
}
}
}
Person cricket_007 = new Person();
cricket_007.setBmi(20); // Maybe this is right? :)
System.out.println(cricket_007.getCategory()); // NORMAL
public String getCategory() {
if (this.bmi <= 18.5) {
category = "UNDERWEIGHT";
} else if ((this.bmi > 18.5) && (this.bmi <= 25)) {
category = "NORMAL WEIGHT";
} else if ((this.bmi > 25) && (this.bmi <= 30)) {
category = "OVERWEIGHT";
} else if (this.bmi > 30) {
category = "OBESE";
}
return category;
}