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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 孤独客 中级黑马   /  2013-6-26 23:26  /  1214 人查看  /  2 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

在窗口中放置单击按钮和文本框,用户输入错误会报错,使用Try  Catch 来捕获错误信息,再通过循环来提示用户从新输入,如下代码:
do
{
   try
    {
       可能出错的地方。
      }
   catch
    {
     messagebox.show("输入错误,请重新输入:");
    }
}while(true);
为啥会出现死循环??而没有像想象中那样进入窗口重新要求用户输入???

评分

参与人数 1技术分 +1 收起 理由
杞文明 + 1

查看全部评分

2 个回复

倒序浏览
你下面定义的  while(true) 循环条件就是个死循环了,除非循环体do里有break跳出循环。
如果这是在方法里的话有return返回值,再返回到main方法里。就像我下面那样,你不输入正确的永远离不开,除了关程序或者输入对了进入下一步。
while (true)
            {
            try
            {
                int zs = Convert .ToInt32 (Console .ReadLine ());
                return zs ;
            }
            catch
            {
                Console .WriteLine ("您的输入有误,请重新输入!");
                 continue ;
            }

            }

评分

参与人数 1技术分 +1 收起 理由
杞文明 + 1

查看全部评分

回复 使用道具 举报
首先,你要知道 do while 的用法!!  还有 do while 和 while 的区别  !
  do
   {
    执行的语句;
  }
  while(条件);
  说明:  首先会执行一次 do 然后再来判断条件(既执行while) ,如果条件满足则再去执行 do ,直到不满足为止!!!


while(条件)
{
  执行的语句;
}   

说明:while只有条件满足时才执行,是先判断,后执行!!


while和do while 的区别

while :while只有条件满足时才执行,是先判断,后执行!! 有可能一次都不执行
do while : 先执行一次,然后再判断!!   至少执行一次



现在来看一哈你的问题
do.........while(true);
你的判断条件是 "true" 那么也就是说它一直都满足;  再来看看 do while 的说明: 首先会执行一次 do 然后再来判断条件(既执行while) ,如果条件满足则再去执行 do ,直到不满足为止!!!


这里面条件一直都满足 能不死循环吗????  

你所谓的异常是什么??  你最好吧那部分代码弄出来!!  这样才好解决!!  如果只是为了 用户输入有误时,让用户重新输入,那么没必要用 try catch!
  首先 你判断用户的输入是否满足你的要求,不满足的话,让你的textbox获得光标 然后用return返回!  
下面用我用最基本的给你说说  假设 TextBox 的名字为 txt ,我要实现的功能是: 把用户输入的 字符串转为整型

  int result; //用来存转换的数字
  bool isok =  int.TryParse(txt.Text.Trim(), out result);//
if(!isok) //没有转换成功
{
    MessageBox.Show("输入有误,请重新输入!!!");  //提示用户重新输入
    txt.Focus(); //让输入的文本框获得光标
  return ;  //返回 退出此方法
}
。。。。。。。
   

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