Java嵌套的if/else if变量从不实例化

Java嵌套的if/else if变量从不实例化,java,variables,if-statement,Java,Variables,If Statement,说到编程,我是一个相对的初学者,到目前为止,我对每一个概念都有很好的掌握。我在这个项目中的任务是根据不同国家的不同法律制定一个税务代码,我必须使用嵌套的if/else语句来实现这一点。这是我的密码 public static double question3(String county, String product, String paymentMethod) { double taxRate; if (county.equals("Dale")) {

说到编程,我是一个相对的初学者,到目前为止,我对每一个概念都有很好的掌握。我在这个项目中的任务是根据不同国家的不同法律制定一个税务代码,我必须使用嵌套的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语句代表了税收增加或减少的所有“特殊情况”。每个县块末尾的else语句是该县的基本税率,用于所有其他购买(Dale为1.5%,Richland为3%,Park为2%)

这里发生的事情是,当我运行测试用例时,不管是什么场景,taxRate的值都是0.0,就好像从来没有给它赋值一样。我希望我在这里提供了足够的信息,但我不知道我做错了什么

我很感激在这个问题上得到的任何帮助

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

else return Double.NaN;

return 0; 
您需要返回税率,因此请将其放在代码末尾:

return taxRate;
如果需要,可以首先将其设置为
Double.NaN

double taxRate = Double.NaN;

但最终,正如杰罗恩在评论中正确地说的那样,“无论发生什么情况”,你都需要的只是返还税率

使用调试器逐步检查代码…问题是什么?返回0;并非遥不可及。这可能就是为什么您总是将0.0作为输出的原因:-)谢谢大家的评论。只需返回税率而不是0即可。我认为这不是问题所在,因为在我编写程序之前,“return 0”行就被默认为程序中的一行。问题已经回答了。