Java 体重指数计算器NaN输出
我最近刚开始用Java编写代码,按照教授的要求使用记事本,并被要求创建BMI计算器(我以前用C++编写过)。然而,尽管我的类和驱动程序都进行了编译,而且我没有看到任何错误,但程序输出在应该返回浮点值时返回'NaN'。谁能告诉我哪里出了问题?该类的代码:Java 体重指数计算器NaN输出,java,Java,我最近刚开始用Java编写代码,按照教授的要求使用记事本,并被要求创建BMI计算器(我以前用C++编写过)。然而,尽管我的类和驱动程序都进行了编译,而且我没有看到任何错误,但程序输出在应该返回浮点值时返回'NaN'。谁能告诉我哪里出了问题?该类的代码: import java.util.Scanner; public class BMICalculator { Scanner input = new Scanner(System.in); float weight; fl
import java.util.Scanner;
public class BMICalculator
{
Scanner input = new Scanner(System.in);
float weight;
float height;
float bmi;
public float calculateBMI()
{
bmi = (weight / (height * height)) * 703;
}
public void setWeight(float aWeight)
{
weight = aWeight;
}
public void setHeight(float aHeight)
{
height = aHeight;
}
public float getWeight()
{
return weight;
}
public float getHeight()
{
return height;
}
public float getBMI()
{
return bmi;
}
public void ask()
{
System.out.print("Enter a weight in pounds: ");
weight = input.nextFloat();
System.out.print("Enter a height in inches: ");
height = input.nextFloat();
calculateBMI();
}
public void show()
{
System.out.println();
System.out.println("Body Mass Index: " + bmi);
if (bmi <= 0)
{
System.out.println("Something went wrong...");
}
else if (bmi >= 1.0 && bmi < 18.5)
{
System.out.println("Underweight.");
}
else if (bmi >= 18.5 && bmi < 25.0)
{
System.out.println("Normal weight.");
}
else if (bmi >= 25.0 && bmi < 30.0)
{
System.out.println("Overweight.");
}
else if (bmi >= 30.0)
{
System.out.println("Obese.");
}
}
}
代码在我看来很好,如果只使用类方法设置变量,为什么还要编写setter呢?还为
calculateBMI
函数添加了作为float的返回类型,但不返回任何内容。你也可以添加主方法吗?因此,我们可以确定问题的确切根源。代码运行良好,经过测试。正如@Sandeep Kokate所说,您的calculateBMI返回一个浮点值,但您所做的只是分配bmi变量。将函数更改为返回void。您没有向我们展示如何运行代码(main)。请张贴完整的代码!如果您正在使用记事本++并在命令提示符下运行java程序,则javac bmiculatordriver.java
应该会给出编译时错误,因为calculateBMI
函数缺少返回语句,将返回类型更改为void,因为您没有从该函数返回任何内容,或者只返回bmi
使程序工作!我将calculateBMI函数的返回类型更改为void,并在Eclipse上对其进行了测试。谢谢大家!代码在我看来很好,如果只使用类方法设置变量,为什么还要编写setter呢?还为calculateBMI
函数添加了作为float的返回类型,但不返回任何内容。你也可以添加主方法吗?因此,我们可以确定问题的确切根源。代码运行良好,经过测试。正如@Sandeep Kokate所说,您的calculateBMI返回一个浮点值,但您所做的只是分配bmi变量。将函数更改为返回void。您没有向我们展示如何运行代码(main)。请张贴完整的代码!如果您正在使用记事本++并在命令提示符下运行java程序,则javac bmiculatordriver.java
应该会给出编译时错误,因为calculateBMI
函数缺少返回语句,将返回类型更改为void,因为您没有从该函数返回任何内容,或者只返回bmi
使程序工作!我将calculateBMI函数的返回类型更改为void,并在Eclipse上对其进行了测试。谢谢大家!
public class BMICalculatorDriver
{
public static void main(String [] args)
{
BMICalculator userBMI = new BMICalculator();
userBMI.ask();
userBMI.show();
}
}