【问题标题】:Splitting numbers into list/array (e.g. 1998 to 1,9,9,8) [closed]将数字拆分为列表/数组(例如 1998 到 1、9、9、8)[关闭]
【发布时间】:2021-01-21 09:17:24
【问题描述】:

这是我的第一篇文章,如果我不够清楚,请原谅。

正如标题所说,我想将一个数字分成更小的部分,例如 1998 到 1、9、9、8。我环顾四周,但我一直在努力找出正确的搜索词。

我想要这样做的原因是稍后将每隔一个数字乘以 1 或 2,以便能够检查它是否正确。

抱歉,我无法提供任何代码,因为我不确定应该如何解决这个问题。

【问题讨论】:

  • Mod 10(或 DivRem)可能是您想通过 Google 搜索的内容。
  • mjwills 解决方案将起作用并且是最有效的。然而,最简单的解决方案是 (1) 将您的数字转换为字符串 myNumber.ToString(),然后 (2) 将该字符串转换为字符数组 myString.ToCharArray()。然后,您可以遍历这些字符并使用 Char.GetNumericValue() 进行计算。
  • 顺便说一句,您尝试做的事情听起来与calculating a GTIN check sum 非常相似。

标签: c#


【解决方案1】:

正如@mjwills 所说,mod 就是你想要的。

    static IEnumerable<int> Digitize(int num)
    {
        while (num > 0)
        {
            int digit = num % 10;

            yield return digit;

            num = num / 10;
        }
    }

然后这样称呼它:

    static void Main(string[] _)
    {
        int num = 1998;

        int[] digits = Digitize(num).ToArray();

        Console.WriteLine($"Original: {num}");

        foreach (var digit in digits)
            Console.WriteLine(digit);
    }

【讨论】:

    【解决方案2】:

    把那个数字做成一个字符串,然后变成这样

    ```
    int a = 1990;
    int[] intArray = new int[a.ToString().Length];
    int index = 0;
    foreach( char ch in a.ToString())
    {
       intArray[index] = int.Parse(ch.ToString());
       index++;
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-11-27
      • 2015-04-17
      • 1970-01-01
      • 1970-01-01
      • 2022-10-08
      • 2015-01-29
      • 1970-01-01
      相关资源
      最近更新 更多