【问题标题】:printing certain digits from a string c#从字符串 c# 打印某些数字
【发布时间】:2014-04-04 16:06:18
【问题描述】:

我正在尝试解决有关输入一串数字并检查数字的第三位是否为“7”的问题。这是我到现在为止的想法:

            string outnum;
            int num1;
            int[] num;
            num = new int[100];

            while (true)
        {
            Console.WriteLine("Input number:");
            outnum = Console.ReadLine();
            if (int.TryParse(outnum, out num1))
            {
                for (int i = 1; i <= 100; i++) 
                {
                    num[(int)i] = Convert.ToInt32(Convert.ToString(outnum[(int)i]));
                }

                if (num[3] == 7)
                {
                    Console.WriteLine("The third digit is 7");
                    break;
                }
                else
                {
                    Console.WriteLine("The third digit is not 7");
                    break;
                }


            }
        }

但是,我在 for 循环中遇到错误,因为为了使其正常工作,从控制台输入的字符串应该包含与“i”int 一样多的字符。因此,我在这种情况下寻求帮助。如何在不输入100个字符的情况下制作长度为100的字符串?

【问题讨论】:

  • 你究竟为什么要砍掉 100 次?看来你应该只循环outnum 的时间。此外,仅仅因为 C# 默认是从零开始的索引语言,您可能应该从 0 开始循环并向上循环,而不是 1。(即 (for (int i = 0; i &lt; 100; i++))

标签: c# arrays for-loop


【解决方案1】:

使用String.Length 属性:

  for (int i = 0; i < outnum.Length; i++) 

或者简单地代替循环 outnum[2] == '7'(记住 - 索引从零开始)。

【讨论】:

    【解决方案2】:

    你可以这样使用:

    input[2]=="7"
    

    为了检查你的字符串的第三个字符(我称之为input)是否是七个。

    【讨论】:

      【解决方案3】:

      只使用 LinQ

      if (int.TryParse(outnum, out num1))
      {
          List<int> numbers = outNum.ToCharArray()
                              .Select(x => Convert.ToInt32(x.ToString()))
                              .ToList();
          if(numbers[2] == 7)
              Console.WriteLine("Is 7");
          else
              Console.WriteLine("Not 7");
      }
      

      不需要保留一个固定长度的数组(但是对于整数来说,100 个插槽似乎有点过多)。
      请注意,我已将 List 的索引更改为 2 而不是 3,因为数组始终从索引 0 开始,因此使用索引 2 检索第三位。

      【讨论】:

        【解决方案4】:

        如果你只关心 C# 数字中的第三个字符从 0 开始

        string values="fg7gdhjdhd";
        string val=values.Substring(2,1);
        int number=Convert.ToInt32(val);
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2015-05-23
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多