Skip to content
On this page

else 与 if 的匹配

if...else 条件结构中,如果某个分支只包含一条命令,那么是可以省略大括号{}的。比如上一节的练习,可以简化为:

img

请注意,如果分支中包含 2 条以上的命令,是不能省略{}的。

如果 ifelse 比较多,又省略了{},怎么判断那一个 if 和哪一个 else 是一对呢?请看下面的代码:

img

当出现多个 ifelse ,又没有{}来界定范围时,请参考下面 2 条原则:

  • 每一个 else 与前面离它最近的 if 配对。按照这个原则,上面示例代码的两个 else 都与第二个 if 配对,这显然是不可能的,于是又有了第二个原则。
  • 多个 else 都与同一个 if 相近时,最内层的 else 优先配对。这样,第一个 else 处于内层,就与第二个 if 优先配对,第二个 else 只能与第一个 if 配对。上面的示例代码会输出“C”。

根据这两个原则,上面的代码等同于如下的规范代码:

img

编写条件结构时,尽可能加上 {} 可以省掉不必要的错误和麻烦。

任务

右边的代码省略掉了 if...else 结构的所有{},运行后却什么都不输出。

请给代码合适的位置补上 {} ,使程序能够输出“6”。

代码

csharp
using System;
using System.Collections.Generic;
using System.Text;

namespace Test
{
    class Program
    {
        static void Main(string[] args)
        {
            int x = 5;
            int y = 6; 
            if (x >= y) {
                if (x >= 5) {
                    Console.WriteLine("5");
                }
            }
            else {
                if (y >= 6) {
                    Console.WriteLine("6");
                }
                else {
                    Console.WriteLine("7");
                }
            }
        }
    }
}

编程练习

多重 if 结构包含多个条件,每个条件对应一个分支。运行时,从上到下依次判断每一个条件,当某个条件为 true,就执行对应的分支,并且不再验证其他的条件;若所有的条件均为 false,则执行最后的 else 分支。

练习:某银行营业部开展“储蓄赠礼”活动,存款达到或超过 100000 元的"送一台微波炉";存款不到 100000 元但是达到 50000 元的"送一套茶具";存款不到 50000 元但是达到 10000 元的"送一袋大米";如果不到 10000 元则"没有礼品"。

请补充代码,用多重 if 结构实现上述功能。

csharp
using System;
using System.Collections.Generic;
using System.Text;

namespace Test
{
    class Program
    {
        static void Main(string[] args)
        {
            double money = 60000.00;//存款金额
            //请在这里补充多重条件判断 
            if (money >= 100000) {
                Console.WriteLine("送一台微波炉");
            } else if (money >= 50000) {
                Console.WriteLine("送一套茶具");
            } else if(money >= 10000) {
                Console.WriteLine("送一袋大米");
            } else {
                Console.WriteLine("没有礼品");
            }
        }
    }
}