标题:检测输入的字符是否为数字,不知道错在什么地方,求教
只看楼主
nevvay
Rank: 1
等 级:新手上路
帖 子:7
专家分:0
注 册:2011-11-23
得分:0 
回复 10楼 刹影圣星
嗯,我看下,之前前面2个办法我都去试了,不过只要输入非数字字符,都会出现异常中断,刚刚wangnannan版主又更新了新的,我还没试,你的也是刚看到,我理解下,去试一下。
2011-12-06 14:34
刹影圣星
Rank: 1
等 级:新手上路
帖 子:4
专家分:7
注 册:2011-12-6
得分:0 
其实修改下就好,对照下;其实调试这种最好用断点,逐行调试
修改:bool rightInput = true;
  修改:      for (int a = 0; a < charArry.Length; a++)
                {
                                      
                    if (!(charArry[a] - '0' >= 0 && charArry[a] - '9' <= 0)) //不在0-9之间
                        rightInput = false;
                }
2011-12-06 15:09
nevvay
Rank: 1
等 级:新手上路
帖 子:7
专家分:0
注 册:2011-11-23
得分:0 
回复 8楼 刹影圣星
根据你的回复,我修改了一下代码,不过还是会有异常
程序代码:
        do
            {
                Console.WriteLine("请输入您现在的存款:");
                temp = Convert.ToString(Console.ReadLine());
                char[] charArry = temp.ToCharArray();
                bool[] isNumber = new bool[charArry.Length];
                for (int a = 0; a < charArry.Length; a++)
                {
                    for (int b = 9; b > -1; b--)
                    {
                        if ((Convert.ToInt32(charArry[a].ToString())) == b) isNumber[a] = true;
                    }
                }
                for (int a = 0; a < isNumber.Length; a++)
                {
                    rightInput = rightInput & isNumber[a];
                }
            } while (rightInput == false);
我现在是把“rightInput”的初始值设成了“true”,并创建了一个布尔数组,用来存输入的每一个字符是否为数字的结果,然后将每一个结果与“rightInput”进行与运算,最终根据“rightInput”是否为真来进行选择接来下的操作,可是还是出现了异常,我又迷惑了,=_=
2011-12-06 15:11
刹影圣星
Rank: 1
等 级:新手上路
帖 子:4
专家分:7
注 册:2011-12-6
得分:0 
static void Main(string[] args)   
        {
            double balance;
            bool rightInput = true;
            string temp;
            char[] charArry;
            do
            {
                rightInput = true;
                Console.WriteLine("请输入您现在的存款:");
                temp = "";
               
                temp = Convert.ToString(Console.ReadLine());
         
                charArry = temp.ToCharArray();
               
                for (int a = 0; a < charArry.Length; a++)
                {
                  
                    /*for (int b = 9; b > -1; b--)
                    {
                        if (Convert.ToInt32(charArry[a]) == b) rightInput = true;

                    }*/
                    if (!(charArry[a] - '0' >= 0 && charArry[a] - '9' <= 0)) //!(Convert.ToInt32(charArry[a].ToString())>=0 && Convert.ToInt32(charArry[a].ToString())<=9)  
                        rightInput = false;
        
                }

            } while (rightInput == false);

            Console.WriteLine("OK!");
            Console.ReadLine();  
        }
2011-12-06 15:17
nevvay
Rank: 1
等 级:新手上路
帖 子:7
专家分:0
注 册:2011-11-23
得分:0 
回复 14楼 刹影圣星
程序代码:
        inPut1:
                try
                {
                   
                    Console.WriteLine("请输入您现在的存款:");

                    balance = double.Parse(Console.ReadLine());
                }
                catch
                {
                    goto inPut1;
                }
用前面的jedypjd的办法已经实现了我要的效果,你的这个办法也可以,不过我还是想知道有没有办法把我那段错误的代码修改到正确,
2011-12-06 15:51



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-357098-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.093197 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved