我的等式不是看双重

时间:2013-02-06 23:23:47

标签: java double equation

我有一个计算热指数的等式。老师提供了等式,我正确地复制了它,但它没有看到我的湿度变量。(对不起,如果我发布了这个错误,这是我在这里的第一篇文章)

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);
}           

2 个答案:

答案 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