A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 李龙祺 中级黑马   /  2012-12-9 20:25  /  2454 人查看  /  7 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

一段关于工资奖励机制的代码 Console.WriteLine("请输入对李四的评判,只能是大写A-B");
            string input = Console.ReadLine();
            decimal salary = 5000;
            bool flag = false;
            switch (input)
            {
                case "A":
                    salary += 500;
                    break;
                case "B":
                    salary += 200;
                    break;
                default:
                    Console.WriteLine("您的输入有问题");
                    flag = true;
                    break;
            }
            if (flag == false)
            {
                Console.WriteLine("李四的工资是:" + salary);
            }
            Console.ReadKey();
如果把bool flag=true; 效果是一样的,那是不是代码中的true和false没有真假意义的。
如果把default下的flag=true注释,作用消失。为何?
求解这个技巧原理?

评分

参与人数 1技术分 +1 收起 理由
宋天琪 + 1

查看全部评分

7 个回复

倒序浏览
1. 如果把flag的值赋值为true后,就有可能输不出李四的工资了;
2.如果把default下的flag=true注释掉,程序就会输出异常的工资信息。
回复 使用道具 举报
许庭洲 发表于 2012-12-9 20:36
1. 如果把flag的值赋值为true后,就有可能输不出李四的工资了;
2.如果把default下的flag=true注释掉,程序 ...

1.我把flag赋值为true,代码运行也是对的。
2.的情况是不管用户输入是否正确都输出李四工资。
但都没问答我的问题啊。学长
回复 使用道具 举报
不懂你的意思
1,bool flag=true,就不会输出李四的工资
2,default下的flag=true注释,会输出李四工资是5000啊

评分

参与人数 1技术分 +1 收起 理由
宋天琪 + 1

查看全部评分

回复 使用道具 举报
不能去掉,去掉过后程序有缺陷! 这里是为了当你输入的有问题的时候, 最后那条输出就不会执行, 也就是说当你输入的不是A和B的时候 提示完错误过后不会在输出李四个工资 , 这样程序才算正常!

评分

参与人数 1技术分 +1 收起 理由
宋天琪 + 1

查看全部评分

回复 使用道具 举报
刷新 求解这个技巧的运行原理。
定义bool flag=false  flag= true 有什么区别 还是只是起到一个架桥的作用?
回复 使用道具 举报
苏波 高级黑马 2012-12-10 21:52:41
7#
1 :改为true的话,后面的if语句条件不成立,李四的工资将不会输出
2:将其注释后,当输入有问题是,if条件仍然成立,仍然会输出李四的工资是:5000

    修改后 虽然代码不会报错但是 作用消失,没有实现正确的功能

评分

参与人数 1技术分 +1 收起 理由
宋天琪 + 1

查看全部评分

回复 使用道具 举报
邵帅 中级黑马 2012-12-10 21:57:37
8#
你改成true的话,你如果输入错误的工资,比如说字母什么的。报错的同时也会输出最后工资的那条语句,工资就是5000了

评分

参与人数 1技术分 +1 收起 理由
宋天琪 + 1

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马