Java - 嵌套if / else if - 变量永远不会实例化

时间:2015-03-09 18:09:37

标签: java variables if-statement

在编程方面,我是一个相对初学者,直到现在我对每个概念都有很好的把握。我对这个项目的任务是根据不同国家的不同法律制定税法,我必须使用嵌套的if / else语句来完成。这是我的代码。

public static double question3(String county, String product, String paymentMethod)
{        
    double taxRate;

    if (county.equals("Dale"))
    {                       
        if (product.equals("Tobacco") || product.equals("Alcohol"))
        {
            if (paymentMethod.equals("Cash"))
                taxRate = 8.5;
            else if (paymentMethod.equals("Check"))
                taxRate = 4.5;
            else
                taxRate = 3.5;
        }

        else if (product.equals("Potato Chips") || product.equals("Soda Pop"))
        {
            if (paymentMethod.equals("Check"))
                taxRate = 4.0;
            else
                taxRate = 3.0;
        }

        else if (paymentMethod.equals("Check"))
            taxRate = 2.5;

        else
            taxRate = 1.5;
    }

    else if (county.equals("Richland"))
    {                        
        if (product.equals("Books"))
        {
            if (paymentMethod.equals("Credit"))
                taxRate = 2.0;
            else if (paymentMethod.equals("Check"))
                taxRate = 1.5;
            else
                taxRate = 1.0;
        }

        else if (product.equals("Clothing"))
        {
            if (paymentMethod.equals("Credit"))
                taxRate = 3.0;
            else if (paymentMethod.equals("Check"))
                taxRate = 2.5;
            else
                taxRate = 2.0;
        }

        else if (product.equals("Shoes"))
        {
            if (paymentMethod.equals("Credit"))
                taxRate = 4.0;
            else if (paymentMethod.equals("Check"))
                taxRate = 3.5;
            else
                taxRate = 3.0;
        }  
    }

    else if (county.equals("Park"))
    {            
        if (! product.equals("Food"))
        {
            if (product.equals("Alcohol"))
                taxRate = 5.0;
            else if (product.equals("Clothing") || product.equals("Shoes"))
                taxRate = 0.0;
            else
                taxRate = 3.0;
        }

        if (paymentMethod.equals("Cash") || paymentMethod.equals("Credit"))
        {
            if (! product.equals("Food"))
            {
                if (product.equals("Alcohol"))
                    taxRate = 5.0;
                else if (product.equals("Clothing") || product.equals("Shoes"))
                    taxRate = 0.0;
                else
                    taxRate = 2.0;
            }
            taxRate = 1.0;
        }

        else
            taxRate = 2.0;
    }

    else return Double.NaN;

    return 0; 
}    

每个“县”根据产品和/或付款方式有不同的法律和附加税(即如果您在戴尔县以现金购买酒精,则税率为8.5%)。 if和else if语句代表税收增加或减少的所有“特殊情况”。每个县街区末尾的其他声明是该县税收的基本税率,用于所有其他购买(Dale为1.5%,Richland为3%,Park为2%)。

这里发生的事情是,当我运行测试用例时,无论情况如何,taxRate的值都是0.0,好像它从未分配过它的值。我希望我在这里提供了足够的信息,但我不知道我做错了什么。

我感谢您对此问题的任何帮助!

1 个答案:

答案 0 :(得分:0)

您的错误是您的代码中没有任何地方返回taxRate ,这是您想要返回的内容。

else return Double.NaN;

return 0; 

你需要返回taxRate,所以把它放在代码的末尾:

return taxRate;

如果您愿意,可以将其初始设置为Double.NaN

double taxRate = Double.NaN;

但最后只返回taxRate 是你需要的,&#34;无论Jeroen在他的评论中正确地说出了什么情景&#34; !< / p>