带有单个else语句的多个if语句

时间:2014-03-24 02:41:46

标签: java if-statement

我正在复习考试,虽然我们有答案密钥,但我不明白正确的答案。

if (score >= 90)
    grade = 'A';
if (score >= 80)
    grade = 'B';
if (score >= 70)
    grade = 'C';
if (score >= 60) 
    grade = 'D';
else 
    grade = ‘F’;

答案键说“只有当等级<70时,此代码才能正常工作”。我知道else语句与最后一个if语句相关联,但我仍然感到困惑。感谢您的帮助。

2 个答案:

答案 0 :(得分:3)

您发布的代码段是4个独立的,无关的if语句,最后一个恰好具有else条件。由于语句都是独立的,如果其中一个条件为真,那么也不会阻止其他if语句执行。

在您的代码段中,如果得分是例如95,然后将等级设置为'A',然后用'B'覆盖,然后用'C'覆盖,然后用'D'覆盖,最终将结果为'D'。但是,如果得分<1。 70,最终if语句遗留下来的结果将与正确的结果一致,因此grade只会使score < 70得到正确的结果。

正确的形式是:

if (score >= 90) grade = 'A';
else if (score >= 80) grade = 'B';
else if (score >= 70) grade = 'C';
else if (score >= 60) grade = 'D';
else grade = 'F';

如果您在具有各种输入的调试器中尝试代码,并在第一行中断,则可以确切地看到发生了什么。

有关详细信息,请参阅the official tutorial on if-else statements

答案 1 :(得分:0)

这是正确的。如果得分大于70,则成绩将是最后一个要运行的语句,因此最后一项grade将被设置为“D”。因此,您需要if语句或其他技术,例如撤消所有if语句(即将if score>= 90放在最后)。