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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 FrancisTan 于 2014-7-9 08:00 编辑
  1. static void Main(string[] args)
  2. {
  3.        Console.WriteLine("请输入一个数字:");
  4.       
  5.        int num = 0; //接收键盘输入的值
  6.        bool isNumOrNot = false; //标记输入的值是否为数字

  7.        while(!isNumOrNot)
  8.        {
  9.               try
  10.               {
  11.                      num = Convert.ToInt32(Console.ReadLine());
  12.                      isNumOrNot = true;
  13.               }
  14.       
  15.               catch
  16.               {
  17.                      Console.WriteLine("您的输入有误,请重新输入!");
  18.                      isNumOrNot = false;
  19.                      Console.ReadKey();
  20.                      Console.Clear();
  21.               }
  22.         }
复制代码

这是在视频中跟老师学的一段代码,它解决了我对输入控制的困惑。
在这之前遇到那种要求输入值的题目时,就觉得很疑惑,题目要求输入数字或者字母,
那万一要是输入错误呢?答案显而易见的,程序执行错误。
那时候就在想是不是能有一种方法能解决这个问题,果然,坚持看下去就找到了。

记得老师说过,这样的代码才比较安全。
我的理解就是让程序有了自我检测的功能,能让它更加健状。

鉴于这个方法比较常用,老师还推荐我们将它封装成一个方法,用来从键盘输入整数。
下面是我自己封装的代码:
  1. public int ReadInt()
  2. {
  3.        int num = 0;
  4.        bool isNumOrNot = false;

  5.        while(!isNumOrNot)
  6.        {
  7.               try
  8.               {
  9.                      num = Convert.ToInt32(Console.ReadLine());
  10.                      isNumOrNot = true;
  11.                }
  12.                catch
  13.                {
  14.                       Console.WriteLine("输入有误,请重新输入!");
  15.                       isNumOrNot = false;
  16.                       Console.ReadKey();
  17.                }
  18.        }
  19.       
  20.         return num;
  21. }
复制代码


以后再需要从键盘输入一个数字的时候,就不用再去重复写这段代码了,可以直接重用了,非常方便。

17 个回复

倒序浏览
后面要写10篇blog 你可以把这些写到blog里面。当作学习的历程!
回复 使用道具 举报
向晓伟 发表于 2014-7-4 20:06
后面要写10篇blog 你可以把这些写到blog里面。当作学习的历程!

蒽,谢谢,我正在这样做,就是不知道合不合格,呵呵
不过这个流程还是挺有意思的,写完几篇后,比看几个小时视频收获都大!
看视频会头痛,写这个老精神了不犯困。
对了,你也是在准备报名吗?
回复 使用道具 举报
{:3_46:}小伙伴习惯很好啊
回复 使用道具 举报
FrancisTan 发表于 2014-7-4 20:17
蒽,谢谢,我正在这样做,就是不知道合不合格,呵呵
不过这个流程还是挺有意思的,写完几篇后,比看几个 ...

但是blog不是写在这的呀。写到新浪,163,csdn,博客园这些地方~
回复 使用道具 举报
占个位置,先看看
回复 使用道具 举报
坐下来喝杯茶水,继续聊
回复 使用道具 举报
给一分鼓励分。
回复 使用道具 举报
这段代码给你的建议,可以尝试用 int.TryParse 来做
回复 使用道具 举报

谢谢老师给的鼓励分,我会努力学习的!
回复 使用道具 举报
continue  发表于 2014-7-5 17:06
这段代码给你的建议,可以尝试用 int.TryParse 来做

哎呀,这个东西没见过耶前辈,不懂!
我只是把从视频中学到的东西写出来,以巩固自己所学,很有效哦!
回复 使用道具 举报
非常好,引用一下
回复 使用道具 举报
我感觉while()可以换成do while().
这里开头用while()没什么用,但是也不会出错,只是少了一次判断。
从理论上说会更快一点点。

评分

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

查看全部评分

回复 使用道具 举报
cleader 发表于 2014-7-7 18:20
我感觉while()可以换成do while().
这里开头用while()没什么用,但是也不会出错,只是少了一次判断。
从理 ...

蒽,好建议,现在我也知道这东西是不能乱用的了哈哈,不过还是蛮有用的!
回复 使用道具 举报
你好,当有人回复后,请及时把帖子编辑为提问结束,这样,版主才给你加技术分
回复 使用道具 举报
czwanglei 发表于 2014-7-8 23:58
你好,当有人回复后,请及时把帖子编辑为提问结束,这样,版主才给你加技术分
...

哦,谢谢你了
回复 使用道具 举报

没事,要记住了
回复 使用道具 举报
最好不要使用try catch 来判断用户的输入是否正确,应该使用 int.TryParse(strs,out ints),如果转换成功会返回true。double,DateTime等值类型都有这个方法。。。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马