【问题标题】:Multiple if statements with single else statement多个 if 语句和单个 else 语句
【发布时间】:2014-03-24 02:41:46
【问题描述】:

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

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

答案键说“此代码只有在等级

【问题讨论】:

  • 你在困惑什么?
  • 只需手动跟踪,尝试在心理上将分数设置为 80,然后是 70,然后是 60,并观察每个过程中发生的情况
  • @Sotirios Delimanolis 为什么这段代码不适用于之前的 if 语句?
  • 正如 ASKASK 所说,如果 score 的值为 100,代码会发生什么情况? grade 的最终值是多少?
  • @user3453823 在您的脑海中逐步完成它。 70 应该的输出是C。是吗?

标签: java if-statement


【解决方案1】:

您发布的 sn-p 是 4 个独立的、不相关的 if 语句,最后一个恰好有 else 条件。由于语句都是独立的,如果其中一个条件为真,则不会阻止其他 if 语句也执行。

在你的 sn-p 中,如果分数是例如95,然后等级将设置为“A”,然后被“B”覆盖,然后被“C”覆盖,然后被“D”覆盖,最终将成为“D”。但是,如果分数 if 语句剩余的结果将与正确的结果一致,因此它仅在 score < 70 时留下正确的结果 grade

正确的形式是:

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

【讨论】:

  • 您没有显示此 if 语句的正确记录。
  • @VladfromMoscow 嗯,你能澄清一下吗?我无法发现错误。
【解决方案2】:

没错。如果分数大于 70,则成绩将是最后运行的语句,因此最后一个 grade 将设置为始终为“D”。因此,您需要 else if 语句或其他技术,例如反转所有 if 语句(即把 if score>= 90 放在最后)。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-05-27
    • 1970-01-01
    • 2014-02-15
    • 2017-08-29
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多