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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 张久朝 中级黑马   /  2013-6-15 22:02  /  10668 人查看  /  9 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 张久朝 于 2013-6-15 22:53 编辑

关于标记bool  flag=false;对于这个一直有点迷,哪位大神能通俗易懂的讲解一下?
比如说:
定义一个bool类型  如bool  flag=false;
应用如下
bool flag=false;
             do
             {
                 flag = false;//当 flag = false时进行如下循环
             Console.WriteLine("请输入用户名");
             string name = Console.ReadLine();
             Console.WriteLine("请输入密码");
             string score = Console.ReadLine();
            
             if (name != "admin" || score != "888888")
            
            
             {
                 Console.WriteLine("密码或用户名输入错误,请重新输入");
                 flag = true;//如果等于true则跳出循环
             }
            
             }
             while(flag);      
             Console.WriteLine("登录成功");
             Console.ReadKey();
可以理解为while后的flag如果和bool定义的flag相同时就循环
为true时也就是和bool定义的相反时就不循环了直接跳出循环输出结果吗???????

评分

参与人数 1技术分 +1 收起 理由
苏波 + 1

查看全部评分

9 个回复

正序浏览
如果flag 被设为true了,说明是你用户名或密码错了,所有需要重新输入,所以继续执行while循环。
若果flag 还是false 说明,没有进入if里,那就是用户名和密码都对了,所以跳出循环。
回复 使用道具 举报
陈壹 发表于 2013-6-15 22:44
bool flag = false;
            do
            {

非常感谢解释的很清楚
回复 使用道具 举报
彭家贰小姐 发表于 2013-6-15 22:41
首先先理解两个概念
(1)bool flag=false; 这句是定义了一个变量为flag 在下面代码中出现的flag都是这个变量 ...

很八错找找视频又看了下总算多少了解了
回复 使用道具 举报
谢谢大家的帮助撒
回复 使用道具 举报
bool flag = false;
            do
            {
                flag = false;    // 给flag赋值为false,注意这不是判断循环的条件
                Console.WriteLine("请输入用户名");
                string name = Console.ReadLine();
                Console.WriteLine("请输入密码");
                string score = Console.ReadLine();

                if (name != "admin" || score != "888888")
                {
                    Console.WriteLine("密码或用户名输入错误,请重新输入");
                    flag = true;  //给flag赋值为true
                }

            }
            while (flag); //你是将flag的值作为循环判断的条件,从代码上看当flag为false时跳出循环
            Console.WriteLine("登录成功");
从这段代码可以看出,你对while的循环条件理解有点问题,while()中条件的输出为bool类型,当条件成立时,返回true,继续循环,当条件不成立时返回false,跳出循环
如果你想让flag=true时跳出循环,while的条件应该修改为
while(flag!=true),  于此相对的是在do中第一句
flag=false  相对多余

评分

参与人数 1技术分 +1 收起 理由
苏波 + 1

查看全部评分

回复 使用道具 举报
首先先理解两个概念
(1)bool flag=false; 这句是定义了一个变量为flag 在下面代码中出现的flag都是这个变量
(2)do while 的特点是先执行循环体,再判断条件,条件满足,再继续执行循环体

看下这个方法的执行步骤:
(1)第一次执行循环体 变量flag为false


当输入的name="mavis"     score = "123456"
符合(name != "admin" || score != "888888")
所以走入 Console.WriteLine("密码或用户名输入错误,请重新输入");
             flag = true;


(2)判断条件
    因为flag 此时 为true
    所以条件符合,会再走一次循环体
(3)当我们输入正确时

则不符合(name != "admin" || score != "888888") flag 仍然为 false
所以while中的判断条件 不符合 所以就不用走循环体了
此时输入任意键就可以退出了......

评分

参与人数 1技术分 +1 收起 理由
苏波 + 1

查看全部评分

回复 使用道具 举报
这里定义的flag标识,初始值为false
当用户名和密码输入错误的时候,会提示重新输入,并且flag标识重新赋值为true
这个时候会进入while的条件判断
flag为true,那么就继续进行循环
一直到用户名和密码输入正确,不进入到if的代码块,flag为false(每次循环都会初始化,因为你的flag=false是放在循环快中),则退出循环,输出登陆成功

评分

参与人数 1技术分 +1 收起 理由
苏波 + 1

查看全部评分

回复 使用道具 举报
淡.。 发表于 2013-6-15 22:14
理解错了  while(flag)的flag为true就循环  为false就不循环

是我搞反了么
回复 使用道具 举报
理解错了  while(flag)的flag为true就循环  为false就不循环
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马