C#如何检查Integer包含多少个数字并将它们分开

时间:2013-05-16 19:26:55

标签: c# numbers integer int

我想知道如何查看整数包含多少个数字 例: 我有一个int:1234 现在我想要这些数字然后分成4个整数

1000  200   三十    4

我该怎么做?

7 个答案:

答案 0 :(得分:4)

int num = 1234;
var s = num.ToString();

var ints = s.Select((c,i) => (int)(Math.Pow(10,s.Length-i-1)*(c - '0'))).ToArray();

答案 1 :(得分:2)

int number = 1234;
int remainder = number;
int maxPow = (int)Math.Log(number, 10);
for (int factor = (int)Math.Pow(10, maxPow); factor >= 1; factor /= 10)
{
    int part = factor * (remainder / factor);
    remainder -= part;

    Console.WriteLine(part);
}

构建一个集合:

private static IEnumerable<int> GetParts(int number)
{
    int remainder = number;
    int maxPow = (int)Math.Log(number, 10);
    for (int factor = (int)Math.Pow(10, maxPow); factor >= 1; factor /= 10)
    {
        int part = factor * (remainder / factor);
        remainder -= part;
        yield return part;
    }
}

Which can be used the following way:

List<int> parts = GetParts(1234).ToList();
// parts[1] --> 200

请注意,我正在努力不使用提供快速解决方案的字符串......

答案 2 :(得分:2)

您可以使用模10来获取最低的部分,然后从数字中减去该数字并使用模数100来获得下一个,依此类推:

int number = 1234;

for (int div = 10; number != 0; div *= 10) {
  int n = number % div;
  Console.WriteLine(n);
  number -= n;
}

输出:

4
30
200
1000

答案 3 :(得分:1)

使用recursive function

 public List<int> myNums = new List<int>();

 public void getList(int Num, int Multiplier)
 {
     if (Num != 0)
     {
         myNums.Add((Num % 10)*Multiplier);
         getList(Num / 10,Multiplier* 10);
     }
 }

//调用

int N = 1234;
getList(N, 1);

答案 4 :(得分:1)

首先,写一个明确的问题陈述。然后将其分解为一系列更简单的问题。你需要

  1. 将整数分解为其组成十进制数字。
  2. 按正确的顺序将每个数据累积到一个数组中。
  3. 一些提示:

    • 对于任何整数 x ,您可以通过 modulo 10 算术获取1位置的数字值。 123 modulo 10 评估为3。

    • 大多数源自C编程语言的计算机语言(C#是其中之一)在操作数为整数类型时提供整数除法作为默认值。

    • 许多问题(例如此问题)都有一般情况和一两个特定或特殊情况。这里的特殊情况是您的起始值为零。

    在伪代码中,

    • 如果X为零,则返回列表[0]。
    • 否则...
      • 创建一个名为Digits的空整数列表。
      • 而X非零
      • D是X modulo 10
      • X是X除以10
      • 将D添加到数字

    这将以相反的顺序为您提供整数列表。

    提示:还有另一种称为stack的数据结构可能会对解决此问题有所帮助。

答案 5 :(得分:0)

如果不编写完整的函数,一个简单的方法就是利用以下这样的事实:

1234%10 = 4

写一个循环,通过计算模数为10的数字来抓取最左边的数字,然后将数字除以10(丢弃余数)以“右移”数字。只要你跟踪你除以10的次数,你就知道你刚刚提取的数字的位置。

或者,您可以使用在Int32类上找到的ToString()方法将数字转换为字符串,此时可以通过将某个字符串索引处的数字乘以一个数字来找到每个数字的数字。适当的权力10。

答案 6 :(得分:0)

    public static List<int> DecomposeInPowerOf10(int number)
    {
        if (number < 0) return null;
        if (number < 10) return new List<int> {number};

        List<int> result = new List<int>();
        char[] digits = number.ToString(CultureInfo.InvariantCulture).ToArray();
        for (int i = 0; i < digits.Length; i++)
        {
            int digit = digits[i] - '0';
            int value = digit * (int)(Math.Pow(10, (digits.Length - i - 1)));
            result.Add(value);
        }

        return result;
    }