章节
问答
课签
笔记
评论
占位
占位

C#中else与if的匹配

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

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

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

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

每一个 else 与前面离它最近的 if 配对。按照这个原则,上面示例代码的两个 else 都与第二个 if 配对,这显然是不可能的,于是又有了第二个原则。

多个 else 都与同一个 if 相近时,最内层的 else 优先配对。这样,第一个 else 处于内层,就与第二个 if 优先配对,第二个 else 只能与第一个 if 配对。上面的示例代码会输出“C”。

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

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

任务

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

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

?不会了怎么办

根据 else 和 if 的配对原则推断,第二个 else 与第三个 if 配对,第一个 else 与第二个 if 配对,第一个 if 没有与之配对的 else 。所以,当第一个 if 的条件为 false 时,不会输出任何内容。

我们可以把第二个 if 及其分支用 {} 括起来,代码片段如下:

            if (x >= y)
            {
                if (x >= 5)
                    Console.WriteLine("5");
            }
            else
                if (y >= 6)
                    Console.WriteLine("6");
                else
                    Console.WriteLine("7");

由于第二个 if 进入了 {} 里面,第一个 else 不能与之配对(因为 else 不在那个{}中),只好与第一个 if 配对,程序逻辑就发生了改变。

||
1
2
using System;
using System
    .Collection
    s.Generic;
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
提交
重置代码
||

请验证,完成请求

由于请求次数过多,请先验证,完成再次请求

加群二维码

打开微信扫码自动绑定

您还未绑定服务号

绑定后可得到

  • · 粉丝专属优惠福利
  • · 大咖直播交流干货
  • · 课程更新,问题答复提醒
  • · 账号支付安全提醒

收藏课程后,能更快找到我哦~

使用 Ctrl+D 可将课程添加到书签

邀请您关注公众号
关注后,及时获悉本课程动态

举报

0/150
提交
取消
全部 精华 我要发布

最赞回答 / Henry_pan
因为慕课里的这个程序是死板的,只要你和他写的流程不一样就会报错呀,其实你的程序是没有错的,但是你也不能那样写,因为规范的代码的话,if 、else、else if 等都是需要加 {} ,这个的,因为我们做开发以后代码是要给别人读的,所以从开始的时候养成良好的编程的习惯会对我们有帮助!所以你在你的程序加上{}看看还报错不。

最赞回答 / 昵称已被使用1
根据 else 和 if 的配对原则推断,第二个 else 与第三个 if 配对,第一个 else 与第二个 if 配对,第一个 if 没有与之配对的 else 。所以,当第一个 if 的条件为 false 时,不会输出任何内容。我们可以把第二个 if 及其分支用 {} 括起来,代码片段如下:<...code...>由于第二个 if 进入了 {} 里面,第一个 else 不能与之配对(因为 else 不在那个{}中),只好与第一个 if 配对,程序逻辑就发生了改变。

最新回答 / 困就睡觉吧
  没看懂你发出来的问题,而且你这代码大括号加错了。正确的如下:                int x = 5;            int y = 6;            if (x >= y)            {                if (x >= 5)                    Console.WriteLine("5");            }            else            {                if (y...

最赞回答 / 慢走
if(){//if()里面为真,执行if语句,,否则执行else里面的语句//大括号是为了表明if里面有哪些语句//if下面只有一条命令,就可以不用大括号}else{}
全部 我要发布
最热 最新
只看我的

本次提问将花费2个积分

你的积分不足,无法发表

为什么扣积分?

本次提问将花费2个积分

继续发表请点击 "确定"

为什么扣积分?

账号登录 验证码登录

遇到问题
忘记密码

代码语言