所以免责声明:C#noob在这里。我搜索了类似的代码实例,但我无法弄清楚如何将它与我的if语句相关联。我觉得我错过了一些非常明显的东西,但我无法弄明白。如果我不得不猜测它可能在某处放置支架。无论如何,这是声明:
if (netIncome < 30000)
{
federalTaxRate = 0;
}
else if (netIncome == 30000 && netIncome < 60000)
{
federalTaxRate = .1;
}
else if (netIncome == 60000 && netIncome < 100000)
{
federalTaxRate = .2;
}
else if (netIncome == 100000 && netIncome < 250000)
{
federalTaxRate = .3;
}
else if (netIncome >= 250000)
{
federalTaxRate = .4;
}
我感谢任何帮助!
答案 0 :(得分:6)
不应该这样:
else if (netIncome == 30000 && netIncome < 60000)
取而代之的是:
else if (netIncome >= 30000 && netIncome < 60000)
由于&&
运算符要求两个条件都为真,所以只有当netIncome
等于30,000时,表达式才会为真。
此外,由于上一个if
语句确认该值不小于30,000,因此表达式可以缩短为。
else if (netIncome < 60000)
答案 1 :(得分:2)
除了Jonathan Wood已经指出的混乱之外(在第二次检查中,你希望你的收入在30000到60000 之间,但在if
条件下你写的是希望它等于30000),这种检查&#34;阈值水平&#34;可以通过这种方式更简单,更安全地完成:
if (netIncome < 30_000)
{
federalTaxRate = 0;
}
else if (netIncome < 60_000)
{
federalTaxRate = .1;
}
else if (netIncome < 100_000)
{
federalTaxRate = .2;
}
else if (netIncome < 250_000)
{
federalTaxRate = .3;
}
else // (netIncome >= 250000)
{
federalTaxRate = .4;
}
通过这种方式,检查完全相同(因为您已经在第一种情况下检查了收入是否小于30000,在第二种情况下您不需要重新检查它大于30000)。
使用这种方法,我们开发人员现在可以很好地专注于查看实际的重要值(阈值值:30000,60000等),而那些不会被写入多次 。 (DRY principle)
例如,假设明天0税率的联邦门槛从30000变为31000.如果你在代码中更改了30000中的一个,但忘了改变另一个,那么你现在有一个讨厌的逻辑错误!
编辑:而且,它开始变成很多零。您可以使用_
作为忽略的分隔符来编写大数字,而不必像我一样将10次计数为零;)