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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 李拴同 中级黑马   /  2012-7-28 23:58  /  3007 人查看  /  12 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 李拴同 于 2012-7-29 21:52 编辑

怎样知道用户输入的是否是数字啊, 例如我们让用户输入一个年龄 (数字),但是用户输入了是个字符 如果利用 int i= Convert.ToInt32(Console.ReadLine());转换时 程序就会报错啊,什么方法可以 用户输入不是数字时提示输入不符合要求啊。

评分

参与人数 1技术分 +1 收起 理由
宋天琪 + 1

查看全部评分

12 个回复

正序浏览
谢谢大家了 学习了。。。
回复 使用道具 举报
用try{}
catch{}

语句块将你有可能抛出异常的程序代码放在try{}中,这个从控制台输入一句话,转换成int类型就是一个可能抛出异常的程序代码。
样例: console.writeline("请控制台输入一段话?");
  string str=console.readline();
try
{  
   int num=convert.toint32(str);
console.write(num.tostring());
     }
catch
{
   console.writeline("控制台输入错误!");
}

  

评分

参与人数 1技术分 +1 收起 理由
宋天琪 + 1

查看全部评分

回复 使用道具 举报
最直接的办法int.tryparse

评分

参与人数 1技术分 +1 收起 理由
宋天琪 + 1

查看全部评分

回复 使用道具 举报
用try ...catch处理异常就可以了

评分

参与人数 1技术分 +1 收起 理由
宋天琪 + 1

查看全部评分

回复 使用道具 举报
bool int.TryParse(string s, out int num) //将字符串s解析成int类型放入num中,如果解析失败,返回false,解析成功,返回true。

try catch也可以

评分

参与人数 1技术分 +1 收起 理由
宋天琪 + 1

查看全部评分

回复 使用道具 举报
对了 忘了小键盘的ascii·····96-103
回复 使用道具 举报
1.输入非数字用TryParse方法判断不会引发异常,它会返回false,同时将result置为0
  1. string inputStr = Console.ReadLine();
  2.        int inputInt;
  3.        int.TryParse(inputStr,out inputInt);//如果能转换,返回true,并把转换的数值赋给inputInt,如果是非数字,则返回false,重置inputInt为0
  4.        Console.WriteLine(inputInt);
  5.        Console.ReadKey();
复制代码
2.如果是在javascript里判断的时候 isNaN函数
      isNaN(输入的字符串) 这个只是判断能不能转换,返回bool

3. try catch  代码块包起来

4.判断按键的ascii码   48-57为数字

5.不几道了·····等待大神补充{:soso_e117:}

评分

参与人数 1技术分 +1 收起 理由
宋天琪 + 1

查看全部评分

回复 使用道具 举报
  你可以使用TryParse,TryParse的特色作用是尝试转化,如果转换成功返回true,如果转换失败返回false,下面这个例子为了防止输入的是小数所以我double类型,      希望能帮到你
            double a;
            Console.Write("请输入:");
            string c = Console.ReadLine();
            if (double.TryParse(c,out a))
            {
                Console.WriteLine("你输入的数字,{0}",a);
            }
            else
            {
                Console.WriteLine("请正确输入");
            }
            Console.ReadKey();

评分

参与人数 1技术分 +1 收起 理由
宋天琪 + 1

查看全部评分

回复 使用道具 举报
用一个简单的判断语句就能解决,楼上的方法挺好的
回复 使用道具 举报
用try catch 在用if解决这个问题!

评分

参与人数 1技术分 +1 收起 理由
宋天琪 + 1

查看全部评分

回复 使用道具 举报
        static bool IsNum(string s)
         {
            bool IsgoodNum = true;

            for (int i = 0; i < s.Length; i++)
            {
                if (s[i] >= 48 && s[i] <= 57)
                {
                    //nothing to do here
                }
                else
                {
                    IsgoodNum = false;
                }
            }
            return IsgoodNum;
        } 做个方法验证

评分

参与人数 1技术分 +1 收起 理由
宋天琪 + 1

查看全部评分

回复 使用道具 举报
用if来判断,如果输入的不是数字,就 return,如果是数字,就int i= Convert.ToInt32(Console.ReadLine());

评分

参与人数 1技术分 +1 收起 理由
宋天琪 + 1

查看全部评分

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