黑马程序员技术交流社区

标题: 遇见死循环了,不知道咋解决 [打印本页]

作者: 陈培茹    时间: 2013-4-13 00:08
标题: 遇见死循环了,不知道咋解决
{:soso_e109:}

捕获.PNG (10.91 KB, 下载次数: 31)

捕获.PNG

作者: 曾玉锋    时间: 2013-4-13 00:22
  1.   string usernaem=null, password=null;
  2.             while(true){
  3.                 Console.WriteLine("请输入用户名");
  4.                 usernaem = Console.ReadLine();
  5.                 Console.WriteLine("请输入密码");
  6.                 password = Console.ReadLine();
  7.                 if (usernaem != "admin" || password != "888888")
  8.                 {
  9.                     Console.WriteLine("用户名或密码错误,请重新输入");
  10.                     continue;
  11.                 }
  12.                 else {
  13.                     break;
  14.                 }
  15.             }
  16.             Console.WriteLine("恭喜你!输入正确,欢迎登录本系统");
  17.             Console.ReadKey();
复制代码

作者: 韦俊琳    时间: 2013-4-13 00:22
while(userName !="admin"&&passWord !="888888")
作者: 黑马田杰    时间: 2013-4-13 01:31
这个应该能够解决你的问题:

test2.png (8.08 KB, 下载次数: 18)

test2.png

作者: 刘欢    时间: 2013-4-13 01:40
  1. static void Main(string[] args)
  2.         {

  3.             string userName="";
  4.             string passWord="";
  5.             while (userName != "admin" || passWord != "888888")
  6.             {
  7.                 Console.WriteLine("用户名:");
  8.                 userName = Console.ReadLine();
  9.                 Console.WriteLine("密码:");
  10.                 passWord = Console.ReadLine();

  11.                 Console.WriteLine("错误!!!");
  12.                 //continue;
  13.             }
  14.             Console.WriteLine("登录成功");
  15.             Console.ReadKey();
  16.         }
复制代码
如果错误要不停的提示,所以要把提示信息写在循环里。由于这里判断要用到变量所以定义在循环外。使用F9断点来检查你的代码就会比较直观清楚的看到死循环。沙发那哥们写的方法好理解。
作者: 郑丹丹1990    时间: 2013-4-13 06:56
楼主,为什么你的Code在我机子上,没有死循环呢?
我也没看出来死循环呀?
??????
作者: 道理    时间: 2013-4-13 07:29
循环里面有错误,你只判断不是条件,如果输入正确你没有写
作者: ゞSunペ果果つ    时间: 2013-4-13 07:59
while(userName!="admin"||passWord!="888")
{
        ....
}
//你先想想这个问题啊,如果你第一次输入的用户和密码错误,他能跳出这个循环么?是不是一直在里面输出“用户名和密码错误,请重新输入”
是不是会一直提示你?你可以在输入用户名和密码的上面用while()循环,然后如果
while(true){
        //这里是输入密码和用户的输入语句
        // ......
        if(userName!="admin"||passWord!="888")
        {
                ....
                continue;
        }else{
        //恭喜你登录成功
        //.........
        break;
        }
}
当然我只是给出你一个思路,楼上也有其他的方法,你都可以参考,重在你可以理解这个思路,会用,希望对你有帮助
作者: 陈培茹    时间: 2013-4-13 08:31
韦俊琳 发表于 2013-4-13 00:22
while(userName !="admin"&&passWord !="888888")

这样写,应该不符合题目的要求啊
作者: 陈培茹    时间: 2013-4-13 08:33
郑丹丹1990 发表于 2013-4-13 06:56
楼主,为什么你的Code在我机子上,没有死循环呢?
我也没看出来死循环呀?
?????? ...

啊哦,确实在我这是死循环啦。你应该纠正了吧,呵呵
作者: 陈培茹    时间: 2013-4-13 08:35
道理 发表于 2013-4-13 07:29
循环里面有错误,你只判断不是条件,如果输入正确你没有写

可能我对do-while 的理解有偏差,还在教程
作者: 陈培茹    时间: 2013-4-13 08:37
曾玉锋 发表于 2013-4-13 00:22

用你的方法可行,但是我不知道自己错在呢呀
作者: 陈培茹    时间: 2013-4-13 08:41
ゞSunペ果果つ 发表于 2013-4-13 07:59
while(userName!="admin"||passWord!="888")
{
        ....

恩恩,万分感谢!很是详细:P
作者: 陈培茹    时间: 2013-4-13 08:42
刘欢 发表于 2013-4-13 01:40
如果错误要不停的提示,所以要把提示信息写在循环里。由于这里判断要用到变量所以定义在循环外。使用F9断点 ...

恩恩,谢谢啦!看来我还要对while语句多理解才可以
作者: ↖落葉下♀媃媚    时间: 2013-4-13 10:33
bool flag=false;
            do
            {
                flag = false;
            Console.WriteLine("请输入用户名");
            string name = Console.ReadLine();
            Console.WriteLine("请输入密码");
            string score = Console.ReadLine();
            
            if (name != "admin" || score != "888888")
            
            
            {
                Console.WriteLine("密码或用户名输入错误,请重新输入");
                flag = true;
            }
            
            }
            while(flag);
            Console.WriteLine("恭喜你!输入正确,欢迎登录本系统");
            Console.ReadKey();
作者: 熊薇    时间: 2013-4-13 12:25
  1.   while (true)
  2.            {
  3.                Console.WriteLine("请输入用户名");
  4.                string userName = Console.ReadLine();
  5.                Console.WriteLine("请输入密码");
  6.                string password = Console.ReadLine();
  7.                if (userName == "admin" && password == "888888")
  8.                {
  9.                    Console.WriteLine("恭喜你!输入正确,欢迎登录本系统");
  10.                    return;
  11.                }
  12.                Console.WriteLine("用户名或密码错误,请重新输入");
  13.            }
  14.      Console.ReadKey();
复制代码
方法很多,你还可以用do-while循环做
你的错误是循环里面只显示了错误提示而没有对错误进行相应的处理(即重新输入),如果循环条件为true,就会一直为true……

作者: 韦俊琳    时间: 2013-4-13 13:02
陈培茹 发表于 2013-4-13 08:31
这样写,应该不符合题目的要求啊

弄错了,不好意思........
作者: 陈培茹    时间: 2013-4-13 13:29
熊薇 发表于 2013-4-13 12:25
方法很多,你还可以用do-while循环做
你的错误是循环里面只显示了错误提示而没有对错误进行相应的处理(即 ...

谢谢,已经解决啦。呵呵




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2