有人能解释我的代码有什么问题吗?

时间:2016-03-04 02:00:20

标签: java

税收取决于他们的薪水差距。如果工资相差10,000美元以内,税率为总额的5%。如果它们相差超过10,000美元,则税收是较大收入的5%加上较小收入的3%。 有人可以解释我的if语句错误,我的if语句不允许测试通过。

public double spouseDistance(double income1, double income2)
{
    double tax;
    double totalincome = income1 + income2;
    double incomedistance = income1 - income2;
    if (incomedistance > 10000)
    {
        if(income1 > income2)
        {
            tax = income1 * 0.05 + income2 * 0.03;
        }else
    {
        tax = income2 * 0.05 + income1 * 0.03;
    }
    }
        else
        {
            tax = totalincome * 0.05;
        }

    return tax;
}

}

@Test
public void testSpousesDistance()
{
    TaxCalculator tc = new TaxCalculator();
    // The border case here is when the difference between the
    // salaries is 10,000 and the value changes at 10,000.01.
    // Since the order of the parameters shouldn't matter, do
    // both cases with both parameter orders
    assertEquals(40000*0.05, tc.spouseDistance(25000,15000), 0.001);
    assertEquals(40000*0.05, tc.spouseDistance(15000,25000), 0.001);
    assertEquals(30000.01*0.05 + 20000*0.03,tc.spouseDistance(20000.00,30000.01), 0.001);
    assertEquals(30000.01*0.05 + 20000*0.03,tc.spouseDistance(30000.01, 20000.00), 0.001);
}

}

2 个答案:

答案 0 :(得分:3)

您希望将incomeDistance设置为Math.abs(income1 - income2)以获取差异的绝对值。您拥有它的方式,如果income2> income1你分支到错误的代码块。

拿你的20,000和30,000.01例子。此时incomeDistance变为20,000-30,000.01或-10,000, 小于10,000。

答案 1 :(得分:1)

您必须确保收入距离的结果不是负面的。因为如果收入2大于收入1,在您的代码中,结果将显示为负数。

  

如果结果为负数,则将结果乘以(-1),如果不是   想要包含整个库只是为了一个目的。