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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 范国伟 中级黑马   /  2013-8-8 11:27  /  1229 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

无论用户输入多大的数字,只要是数字就继续运行下边的程序,只要不是数字,就算是空格回车  也要用户重新输入,直到输入数字为止,怎么实现这个功能

评分

参与人数 1技术分 +1 收起 理由
赵宗荣 + 1

查看全部评分

4 个回复

倒序浏览
本帖最后由 马晓凤 于 2013-8-8 11:54 编辑

第一种,用异常来判定

public bool IsNumeric(string args)
{
try
{
  int intCard = Int32.Parse(TextBox1.Text);
  return true;
}
catch
{
  return false;
}
}

if (!IsNumeric(txtCard.Text))
{
lblOutput.Text = "卡号请输入数字";
}

第二种,是用javascript判定

function   phonenum(this)   /this为文本框   
  {   
        if(!isNaN(this.value))

       {   
              window.alter("电话好码必须为数字")   
        }   
  }  

第三种正则表达式

public static bool IsNumeric(string value)
{
return Regex.IsMatch(value, @"^[+-]?\d*[.]?\d*$");
}
tring n = Console.ReadLine();
int num;
if (IsNumeric(n))
{
//执行数字的程序
}


个人觉得正则表达式比较好用一些

评分

参与人数 1技术分 +1 收起 理由
赵宗荣 + 1

查看全部评分

回复 使用道具 举报
本帖最后由 lvjayj 于 2013-8-8 12:31 编辑

static void Main(string[] args)
        {
            while (true)
            {
                //用则表达式这里的判断包括小数,如果不包括小数用@"^\d+$"
                System.Text.RegularExpressions.Regex objNotNumberPattern = new System.Text.RegularExpressions.Regex(@"^\d+$");
                if (objNotNumberPattern.IsMatch(Console.ReadLine().ToString()))
                {
                    break;
                }
                Console.WriteLine("输入错误");  //提示错误
            }
        }
楼上的异常判断,检查不出有空格的。我也认为用正则表达式好

评分

参与人数 1技术分 +2 收起 理由
赵宗荣 + 2

查看全部评分

回复 使用道具 举报
一种方法:可以先定义一个字符串变量来接受输入的内容,然后循环遍历这个字符串中的每个字符,比较它的ASCALL码是不是在48和57之间,全是的话则是数字,否则不是!
回复 使用道具 举报
一种方法:可以先定义一个字符串变量来接受输入的内容,然后循环遍历这个字符串中的每个字符,比较它的ASCALL码是不是在48和57之间,全是的话则是数字,否则不是!
回复 使用道具 举报
可以用int.TryParse和一个do{}while{}来做。
  1. bool bNumberorNot = false;
  2. int iInput;
  3. do
  4. {
  5.     bNumberorNot = int.TryParse(Console.ReadLine(),out iInput);   
  6.    
  7. }while(bNumberorNot = false);
复制代码
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马