Unity - A计划(永久有效期) 扫二维码继续学习 二维码时效为半小时

(196评价)
价格: 4049.00元
C#编程第一季,92-判断合法标识符
至秦发起了问答2022-04-04
4
回复
1005
浏览

我自己写的和老师讲的是思路是反的,我能理解老师的,但是想不通,为啥我反过来写就是错的,它一直输出“不合法”

            Console.WriteLine("请输入合法标识符:");
            string str = Console.ReadLine();
            bool hefa = false;
            if (str[0] < '0' || str[0] > '9')
            {
                for (int i = 0; str[i] < str.Length; i++)
                {
                    if ((str[i] >= '0' && str[i] <= '9') || (str[i] >= 'a' && str[i] <= 'z') || (str[i] >= 'A' && str[i] <= 'Z') || str[i] == '_')
                    {
                        hefa = true;
                    }
                    else
                    {
                        hefa = false;
                        break;
                    }
                }
            }           
            if (hefa) Console.WriteLine("该标识符合法!");
            else Console.WriteLine("该标识符不合法,请重新输入!");

所有回复
  • 老师_Trigger 2022-04-05

    同学你好,这个要看同学的输入内容和需求了,老师外部是不包含if条件的,同学外部包含了一个0-9的判断,这样字符值是0-9之内的都没办法进入我们的逻辑,这样输出的都是不合法的

    • 至秦 2022-04-05

      我去掉外部的if判断,输出的一直是不合法。我输入abc,或者任何的合法变量名,都是输出不合法。

      (0) 回复
    • 至秦 2022-04-05

      这个是老师的思路写的,我看了好久,就是判断条件反了过来呀,为啥我的就不行呢?我的就算去掉if,无论我输入啥,也是永远输出不合法

      Console.WriteLine("请输入合法标识符");
      string str = Console.ReadLine();
      bool hefa = true;
      for (int i = 0; i < str.Length; i++)
      {
      if ((str[i] < '0' || str[i] > '9') && (str[i] < 'a' || str[i] > 'z') && (str[i] < 'A' || str[i] > 'Z') && str[i] != '_')
      {
      hefa = false;
      break;
      }
      }
      if (str[0] >= '0' && str[0] <= '9')
      {
      hefa = false;
      }

      if (hefa)
      {
      Console.WriteLine("这个标识符合法!");
      }
      else
      {
      Console.WriteLine("这个标识符不合法,请重新输入!");
      }

      (0) 回复
    还有-3条回复,点击查看
    你还没有登录,请先登录注册
  • 老师_Trigger 2022-04-06
     bool isRight = false;
                for (int i = 0; i < str.Length; i++)
                {
                    if ((str[i] >= '0' && str[i] <='9') || (str[i] >= 'a' && str[i] <= 'z') || (str[i] >='A' && str[i] <='Z') || (str[i] == '_'))
                    {
                        isRight = true;
                     
                    }
                    else
                    {
                        isRight = false;
                        break;
                    }
                }
                if (isRight)
                {
                    Console.WriteLine("是合法标识符");
                }
                else
                {
                    Console.WriteLine("不是合法标识符");
                }

    把if外边那层去掉就行了,加了之后输入0-9的话逻辑不走,直接就输出false

    还有-5条回复,点击查看
    你还没有登录,请先登录注册
发表回复
你还没有登录,请先 登录或 注册!