我有一个计算热指数的等式。老师提供了等式,我正确地复制了它,但它没有看到我的湿度变量。(对不起,如果我发布了这个错误,这是我在这里的第一篇文章)
public class HeatIndexCalculator {
private int temperature;
private double humidity;
private double heatIndex;
public double calculateHeatIndex(int currentTemp, double currentHumidity){
temperature = currentTemp;
humidity = (currentHumidity/100.0);
heatIndex=(-42.379)+(2.04901523*temperature)+10.14333127*humidity+
-0.22475541*temperature*humidity+
-0.00683783*temperature*temperature+
-0.05481717*humidity*humidity+
0.00122874*temperature*temperature*humidity+
0.00085282*temperature*humidity*humidity+
-0.00000199*temperature*temperature*humidity*humidity;
下面是我尝试调用方法
的时候public static void main(String[] args) {
Scanner input = new Scanner(System.in);
int x;
double y,z;
HeatIndexCalculator HeatC = new HeatIndexCalculator();
System.out.println("Please enter a temperature in degrees Fahrenheit");
x = input.nextInt();
System.out.println("Please enter the current humidity as a percenage");
y = input.nextDouble();
z = HeatC.calculateHeatIndex(x, y);
HeatC.printHeatIndex(x, y, z);
}
答案 0 :(得分:0)
您的方法没有任何问题。我稍微扩展了你的代码以生成一个可执行的例子。输出是:
temperature=20 humidity=50 : -1.0736070574999943
temperature=20 humidity=25 : -2.601307430624994
temperature=20 humidity=75 : 0.44927371937500604
所以它注意湿度就好了。我怀疑你的问题实际上在你的测试中,因为你有两个不同的湿度单位,比另一个大100倍。
答案 1 :(得分:0)
此解决方案有效,但可能精度不够:
public static double calculateHeatIndex(int currentTemp, double currentHumidity)
{
int temperature = currentTemp;
double humidity = (currentHumidity);
double heatIndex = (-42.379) + (2.04901523 * temperature) + 10.14333127 * humidity + -0.22475541 * temperature * humidity
+ -0.00683783 * temperature * temperature + -0.05481717 * humidity * humidity + 0.00122874 * temperature
* temperature * humidity + 0.00085282 * temperature * humidity * humidity + -0.00000199 * temperature
* temperature * humidity * humidity;
return heatIndex;
}
@Test
public void testConst()
{
System.out.println(String.valueOf(calculateHeatIndex(95, 55)));
}
结果:
108.94701570000008