在编程方面,我是一个相对初学者,直到现在我对每个概念都有很好的把握。我对这个项目的任务是根据不同国家的不同法律制定税法,我必须使用嵌套的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,好像它从未分配过它的值。我希望我在这里提供了足够的信息,但我不知道我做错了什么。
我感谢您对此问题的任何帮助!
答案 0 :(得分:0)
您的错误是您的代码中没有任何地方返回taxRate ,这是您想要返回的内容。
else return Double.NaN;
return 0;
你需要返回taxRate,所以把它放在代码的末尾:
return taxRate;
如果您愿意,可以将其初始设置为Double.NaN
:
double taxRate = Double.NaN;
但最后只返回taxRate 是你需要的,&#34;无论Jeroen在他的评论中正确地说出了什么情景&#34; !< / p>