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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 李玲 中级黑马   /  2012-6-13 10:16  /  1946 人查看  /  8 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

实现在某一textbox里以逗号隔开输入十个0-100之间的整数,若个数不是十个或数字不是整数或不在0-100就提示错误,并重新输入 ,还有textbox输入的时候第一个不允许为逗号,只能输入数字之后才能写逗号。代码该怎么写呢。

评分

参与人数 1技术分 +2 收起 理由
郑文 + 2

查看全部评分

8 个回复

倒序浏览
本帖最后由 王继光 于 2012-6-13 11:04 编辑

1. 获得txtbox里的字符串  str
2. 判断  str[0]  是不是 数字    isNumber()方法
3. 是的话, 分割 字符串,, 判断 长度 是否为10 , 不是返回  string.split()方法以 ,(逗号) 分割
4.循环 判断 分割后的 每个字符串  能不能转化为 整数,, 一旦遇到不能转化为整数 或 转化后的数字不在1-100之  间    返回

评分

参与人数 1技术分 +2 收起 理由
郑文 + 2

查看全部评分

回复 使用道具 举报
如果你正则学的好的话  建议用正则!
回复 使用道具 举报
问题有点繁琐,思路是先判断第一个字符是不是逗号,在判断逗号的个数是不是9个,再使用split方法分割字符串,判断每部分是不是数值,是不是0-100的整数

评分

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

查看全部评分

回复 使用道具 举报
string str,s1;
            int i;
            str = textBox1.Text;
            s1 = str.Substring(0, 1);
            if (int.TryParse(s1, out i))
            {
                string[] s=str.Split(',');
                if (s.Length == 10)
                {
                    int[] t=new int[10] ;
                    for (i = 0; i <= 9; i++)
                    {
                        if (!int.TryParse(s[i], out t[i]))
                        {
                            MessageBox.Show("包含非数字字符");
                            return;
                        }
                        if (t[i] > 100 || t[i] < 0)
                        {
                            MessageBox.Show("有数值不在0-100范围内");
                            return;
                        }
                    }

                }
                else
                {
                    MessageBox.Show("输入数不够10组");
                    return;
                }
            }
            else
            {
            MessageBox.Show("第一个字符不是数字");
            return;
            }

评分

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

查看全部评分

回复 使用道具 举报
感觉这个用正则表达式判断会好点.

评分

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

查看全部评分

回复 使用道具 举报
孙毅 中级黑马 2012-6-14 15:49:43
7#
可以这样写
string str = txt控件Id.Text.trim();
if (Regex.IsMatch(str, @"^\d\d?\,(\d\d?\,){8}\d\d?$"))


{

      response.write("格式正确!");

}

else

{

       response.write("格式不正确!");

}



评分

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

查看全部评分

回复 使用道具 举报
孙毅 中级黑马 2012-6-14 15:54:23
8#
孙毅 发表于 2012-6-14 15:49
可以这样写
string str = txt控件Id.Text.trim();
if (Regex.IsMatch(str, @"^\d\d?\,(\d\d?\,){8}\d\d?$" ...

不好意思,忽略了一点,我判断的是0-99的,把100掉了,在正则再加上|100
回复 使用道具 举报
许庭洲 黑马帝 2012-6-15 09:54:12
9#
前台用JAVASCRIPT采用keypress事件,或在后台写程序判断,采用.NET2.0中引入的TryParse方法,通过int.TryParse(s1, out i)来判断输入的第一个字符转换为整数是否成功,若成功采用Split(',');方法把输入的数据采用逗号隔开,然后在if语句里面判断输入的个数即可。

评分

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

查看全部评分

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