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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© qly2046 中级黑马   /  2013-12-22 14:23  /  2449 人查看  /  1 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

神奇的标志位“Bool flag=false
第一次接触标志位,是在苏坤老师讲的C#基础视频中,感觉标志位很神奇。为了充分理解这一知识点,我决定写篇博客对此总结一下,以便加深印象,更加方便广大网友日后使用。先写几个题让大家了解了解,然后总结出规律。
第一题:
李四的年终评定:如果被评为A级,则工资涨500元;B级则涨200元;C级不涨不扣;D级扣200元;E级扣500元。设李四的原工资为5000元,输入评定级别,然后显示李四工资?
namespace 标志位问题1
{
    class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine("请输入李四的级别?只限A-E");
            string input = Console.ReadLine();
            decimal gongzi = 5000m;
            bool flag = false;//定义标志位
            if (input == "A")
            {
                gongzi += 500;
            }
            else if (input == "B")
            {
                gongzi += 200;
            }
            else if (input == "C")
            {
                gongzi += 0;//或者不写
            }
            else if (input == "D")
            {
                gongzi -= 200;
            }
            else if (input == "E")
            {
                gongzi -= 500;
            }
            else
            {
                Console.WriteLine("输入有误,只能输入大写的A-E");
                flag = true;//使用标志位
            }
            if (flag == false)//使用标志位
            {
                Console.WriteLine("李四的工资是:{0}", gongzi);
            }
            Console.ReadKey();
        }
    }
}
第二题
要求用户输入用户名和密码,只要不是admin888888,就一直提示用户重新输入,知道正确为止?
namespace 标志位问题2
{
    class Program
    {
        //要求用户输入用户名和密码,只要不是admin888888,就一直提示用户重新输入,知道正确为止?
        static void Main(string[] args)
        {
            string name;
            string password;
            bool flag = false;//定义标志位
            do
            {
                flag = false;//使用标志位
                Console.WriteLine("请输入用户名!");
                name = Console.ReadLine();
                Console.WriteLine("请输入密码!");
                password = Console.ReadLine();
                if (name != "admin" || password != "888888")
                {
                    Console.WriteLine("用户名和密码错误,请重新输入!");
                    flag = true;//使用标志位
                }
            } while (flag);
            Console.WriteLine("恭喜你,输入正确!");
            Console.ReadKey();
        }
    }
}
总结:从上面两道题来看,标志位主要是起到了“分水岭”的作用,在程序中巧妙的将两种可能性分开,从而得出不同的结果。一般用在程序内部的判断上。看到如此清晰的解释,小伙伴们是不是理解了,会用了呢?

1 个回复

倒序浏览
这个很好理解,而且一般也不是你这样写的,都是用方法封装起来,然后再Main方法直接调用方法名,这个应该是老师没讲方法之前用的方法
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马