我是一个接触asp.net几天,看视频自己写简单控制台程序,遇到键盘输入判断,有很多新手也许会遇到和我一样,特共享下,当然对高手来说,也许我写的不好,毕竟我们不在一个层次,见笑了!
static void Main(string[] args)
        {
            Console.WriteLine("****加法计算器****");
            Console.WriteLine("*************");
            double Num1 = 0; double Num2 = 0;
        ///输入第一个数,并判断是否为数字
        #region         inputNum1:
            Console.WriteLine("请输入第一个数;");
            string sStr1 = Console.ReadLine();            if (sStr1.Trim().Length == 0) //判断空格或回车
            {
                Console.WriteLine("您输入不是有效数字,请重新输入:");
                goto inputNum1;
            }
            else
            {                if (double.TryParse(sStr1, out Num1))  /*把输入的字符串强制转换成double浮点型,为真并把转换后的传给num1参数;
                                                         可以输入小数点或负数*/
                {
                    if (Num1 < 0 || Num1 > 1000)   //此处判断,可以根据输入修改
                    {
                        Console.WriteLine("请输入1-1000以内的数字:");
                        goto inputNum1;
                    }
                    else
                    {
                        Console.WriteLine("您输入的有效数字为:" + Num1);                    }

解决方案 »

  1.   

    别用goto,用循环。
      

  2.   

    goto 到方法逻辑的“开头”,这是可以的,这样的逻辑非常清晰。goto 应该仅用于向前跳转,并且养成习惯、只跳到方法开头的第一个可操作语句。
      

  3.   

    这个时候(需要跳到方法开头第一行操作语句的时候),写一个大大的 do ..... while 控制语句反而显得有一点点繁琐。因为循环中间的规则中其实你多处都需要 continue 方式直接跳到循环的开头,而不是走到 while 语句的地方再从 do 语句开始执行的。所以说,goto 语句也有非常好的用处。
      

  4.   

    了解下正则表达式,效率最高的
    String regex = "-[0-9]+(.[0-9]+)?|[0-9]+(.[0-9]+)?";
      

  5.   

       public Boolean checkNumber(String str) {
            String regex = "-[0-9]+(.[0-9]+)?|[0-9]+(.[0-9]+)?";
            if (str == null || !str.matches(regex)) {
                return false;
            }
            return true;