用数字C#分隔数字

时间:2016-12-16 20:26:27

标签: c# arrays digits

我是编程新手,现在只用C#练习。所以我的问题是:我试图用数组分隔数字中的数字(例如:数字12345到数字{1,2,3,4,5})。我做了一些代码,就是这样:

  int num = int.Parse(Console.ReadLine());
        int[] digits = new int[3];
        int separatedDigit = 0;


        for (int i = num; num != 0; i--)
        {
            digits[i] = num  % 10;
            num = num / 10;

        }

但它显示错误“索引超出了数组的范围。”我想这个问题来自于“for”部分,因为它从位置3开始,而数组只有2(0,1,2)。我不知道如何解决它,所以有人可以帮助我吗?

5 个答案:

答案 0 :(得分:1)

尝试 Linq :过滤掉'0' .. '9'个字符,将具体化到数组中:

int[] digits = Console
  .ReadLine()
  .Where(c => c >= '0' && c <= '9') // '0'..'9' characters only 
  .Select(c => c - '0')             // '0' should correspond to 0 integer
  .ToArray();

答案 1 :(得分:0)

i的开头等于num,而123又以您输入的数字开头,远远大于3.例如,如果我放入{{1}作为输入数字,然后循环首先尝试访问该数组范围之外的 waaaaaay digits[123]

您想要调整for循环,让i以更合理的数字开头:

for (int i = digits.Length - 1; num != 0; i--)
{
    // ...

或者,您可以从0开始i并继续前进:

for (int i = 0; num != 0; i++)
{
    // ...

答案 2 :(得分:0)

问题是初始化数组时没有分配正确数量的空格,例如在以下代码行中: int [] digits = new int [3]; ..相反,您应首先读取输入,计算输入的数字(字符)数,然后分配具有该数量元素的数组。请记住,数组从索引0 ..所以在你的例子中,第一个字符(数字)将在数字[0] ..然后数字[1] ...数字[2] ...等从循环内输入,直到所有数字已被输入。

试试这段代码:

    string numberSequence = Console.ReadLine();
    var numberCount = numberSequence.Length;
    int[] digitArray = new int[numberCount];
    int i = 0;
    foreach (var number in numberSequence)
    {
        digitArray[i] = number;
        Console.WriteLine(number);
        i++;
    }
    Console.ReadLine();

答案 3 :(得分:0)

试试这个

        int _num = 12345;
        var g = _num.ToString().Select(x => int.Parse(x.ToString())).ToArray<int>();

答案 4 :(得分:0)

试试这个

 string strValue = "19345abc#/";
 char[] charArray = strValue.ToCharArray();
 List<int> list = new List<int>();
 for (int i = 0; i < charArray.Length; i++)
     {
       if (char.IsNumber(charArray[i]))
         {
           list.Add(charArray[i] - '0');
         }
     }