Java - 嵌套 if/else if - 变量从不实例化
Java - nested if/else if - Variables never instantiate
在编程方面,我是一个相对初学者,到目前为止,我对每个概念都掌握得很好。我在这个项目中的任务是根据不同县的不同法律制定税法,我必须使用嵌套的 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;
}
每个 "county" 都有不同的法律和附加税,具体取决于产品 and/or 付款方式(即,如果您在戴尔县用现金购买酒精饮料,则税率为 8.5%)。 if 和 else if 语句表示税收增加或减少的所有 "special cases"。每个县块末尾的 else 语句是该县税收的基本税率,用于所有其他购买(戴尔为 1.5%,里奇兰为 3%,帕克为 2%)。
这里发生的事情是,当我 运行 测试用例时,无论在什么情况下,taxRate 的值都是 0.0,就好像它从未被分配过值一样。我希望我在这里提供了足够的信息,但我不知道我做错了什么。
非常感谢在这个问题上得到的任何帮助!
你的错误是 你的代码中没有任何地方 return taxRate,这正是你想要的 return..
else return Double.NaN;
return 0;
您需要 return 税率,因此请将其放在代码末尾:
return taxRate;
您可以先将其设置为 Double.NaN
,如果这是您想要的:
double taxRate = Double.NaN;
但最后 只有 return taxRate 是您需要的,"no matter what the scenario" 正如 Jeroen 正确所说在他的评论中!
在编程方面,我是一个相对初学者,到目前为止,我对每个概念都掌握得很好。我在这个项目中的任务是根据不同县的不同法律制定税法,我必须使用嵌套的 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;
}
每个 "county" 都有不同的法律和附加税,具体取决于产品 and/or 付款方式(即,如果您在戴尔县用现金购买酒精饮料,则税率为 8.5%)。 if 和 else if 语句表示税收增加或减少的所有 "special cases"。每个县块末尾的 else 语句是该县税收的基本税率,用于所有其他购买(戴尔为 1.5%,里奇兰为 3%,帕克为 2%)。
这里发生的事情是,当我 运行 测试用例时,无论在什么情况下,taxRate 的值都是 0.0,就好像它从未被分配过值一样。我希望我在这里提供了足够的信息,但我不知道我做错了什么。
非常感谢在这个问题上得到的任何帮助!
你的错误是 你的代码中没有任何地方 return taxRate,这正是你想要的 return..
else return Double.NaN;
return 0;
您需要 return 税率,因此请将其放在代码末尾:
return taxRate;
您可以先将其设置为 Double.NaN
,如果这是您想要的:
double taxRate = Double.NaN;
但最后 只有 return taxRate 是您需要的,"no matter what the scenario" 正如 Jeroen 正确所说在他的评论中!