Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/281.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如果跳过else语句,我缺少什么?_C# - Fatal编程技术网

C# 如果跳过else语句,我缺少什么?

C# 如果跳过else语句,我缺少什么?,c#,C#,因此,免责声明:这里是noob。我到处搜索类似的代码实例,但我不知道如何将其与if语句关联起来。我觉得我错过了一些非常明显的东西,但我无法理解。如果让我猜的话,它可能放在某个地方。不管怎么说,以下是声明: if (netIncome < 30000) { federalTaxRate = 0; } else if (netIncome == 30000 && netIncome < 60000) { federalTaxRate = .1; } els

因此,免责声明:这里是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;
}
谢谢你的帮助

这不应该:

else if (netIncome == 30000 && netIncome < 60000)
这不应该:

else if (netIncome == 30000 && netIncome < 60000)

除了乔纳森·伍德(Jonathan Wood)在第二次检查中已经指出的混淆之外,你希望你的收入在30000到60000之间,但在你写的条件下,你希望它等于30000,通过这种方式可以更简单、更安全地检查treshold水平:

    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

使用这种方法,我们开发人员现在可以很好地专注于查看实际的重要值tresholds值:30000、60000等等,而这些都不是写了一次以上

例如,想象一下明天联邦税率从30000变为31000。如果您更改了代码中30000个错误中的一个,但忘记更改另一个,那么您现在就有了一个讨厌的逻辑错误


编辑:而且,它开始有很多零。你可以使用uu作为被忽略的分隔符来写大数字,而不必像我一样对零进行10次计数

除了乔纳森·伍德(Jonathan Wood)在第二次检查中已经指出的混淆之外,你希望你的收入在30000到60000之间,但如果你写的条件是你希望它等于30000,这种对特雷肖尔德水平的检查可以通过以下方式更简单、更安全地进行:

    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

使用这种方法,我们开发人员现在可以很好地专注于查看实际的重要值tresholds值:30000、60000等等,而这些都不是写了一次以上

例如,想象一下明天联邦税率从30000变为31000。如果您更改了代码中30000个错误中的一个,但忘记更改另一个,那么您现在就有了一个讨厌的逻辑错误


编辑:而且,它开始有很多零。你可以使用uu作为被忽略的分隔符来写大数字,而不必像我一样对零进行10次计数

当然,这同样适用于其他条件。哇,是的,只需将==更改为>=即可使整个块运行并显示正确的结果。非常感谢你。我觉得作为一个C语言的新手,我最大的陷阱就是把最小的事情弄糟了。如果乔纳森·伍德的答案解决了你的问题,请接受他正确的答案。@Rethunk不要急于接受答案。相反,通常一个好的做法是等待几天,收集更多可能提供其他见解的答案。但当然,在某个时候为了公众的利益这样做是很重要的site@Pac0当前位置我明白你的意思,但在这个特殊情况下,问题很简单,答案很简单,似乎没有太多需要考虑的问题。我也会给你的答案加1。当然,其他条件也一样。哇,是的,只要将==更改为>=就可以运行整个块并显示正确的结果。非常感谢你。我觉得作为一个C语言的新手,我最大的陷阱就是把最小的事情弄糟了。如果乔纳森·伍德的答案解决了你的问题,请接受他正确的答案。@Rethunk不要急于接受答案。相反,通常一个好的做法是等待几天,收集更多可能提供其他见解的答案。但当然,在某个时候为了公众的利益这样做是很重要的site@Pac0当前位置我明白你的意思,但在这个特殊情况下,问题很简单,答案很简单,似乎没有太多需要考虑的问题。我也会给你的答案打+1。