我的单独方法不断返回错误的值

时间:2015-12-10 22:36:24

标签: java for-loop methods return-value

我使用我的体重作为180,在地球以外的行星上用lbs找到我的体重,并使用质量和表面重力来找到重量。我面临的问题是,无论何时调用此方法,权重值都会返回180,这是调用方法的8倍。在我的代码中,我的重量是用(mass * roundedSG)/ 433计算的...它不应该返回180.我不知道如何解决这个问题,我已经尝试了几个小时。 for循环是一个不同的方法,顺便说一下,我正在为家庭工作做这个,任何帮助都会受到赞赏,试着解决我的这个问题。谢谢!

public static double weight(double sGravity, double w) 
{
    double roundedSG = sGravity / 10;
    double mass = (w * 433.59237)/roundedSG;
    double weight = (mass * roundedSG)/433.59237;

    return weight;
}

    for(int i = 0; i < planetSurfaceGravity.length; i++)
    {
        weightOnPlanets[i] = weight(planetSurfaceGravity[i], weightLbs);
        System.out.println(weightOnPlanets[i]);
    }
}

4 个答案:

答案 0 :(得分:2)

我认为你的体重()数学是不正确的。看起来重量实际上是返回以下内容:

 (w * 433/roundedSG)*roundedSG/433.

433s和roundSGs取消了,你只是回归w,我猜是180?

答案 1 :(得分:0)

正确的重量公式是:

  

重量=(质量*重力);

更改自:

 double weight = (mass * roundedSG)/433.59237;

致:

double weight = mass * roundedSG;

答案 2 :(得分:0)

您的体重计算方法不正确。它的结果只返回你作为weightLbs(= 180)传递的w。

答案 3 :(得分:0)

我重命名了你的变量,并添加了一个常量,使代码更清晰:

private static final double GRAMS_PER_POUND = 433.59237;
public static double weight(double sGravity, double weightLbs)  
{
    double roundedSG = sGravity / 10;
    double mass = (weightLbs * GRAMS_PER_POUND)/roundedSG;
    double weight = (mass * roundedSG)/GRAMS_PER_POUND;

    return weight;
}

所以你的地球上的质量被转化为克,正被你所检查的任何行星的重力所分割。将质量计算更改为

double mass = weightLbs * GRAMS_PER_POUND;

然后重量计算应该没问题,将另一个行星上的重量从克转换回磅。