繁体   English   中英

用数字数组C#分隔数字

[英]separating number in array of digits C#

我是编程新手,目前仅使用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)。 我不知道该如何解决,所以有人可以帮助我吗?

尝试的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();

i开始时等于num ,而后者又开始时是您输入的数字,可以远大于3。例如,如果我输入123作为输入数字,则循环首先尝试访问digits[123]这是waaaaaay该数组的范围之外。

您将需要调整for循环,以使i以更合理的数字开始:

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

或者,您可以将i从0开始并逐步提高:

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

问题是初始化数组时您没有分配正确的空格数,例如在下面的代码行中:int [] digits = new int [3]; ..相反,您应该首先读取输入,然后计算输入的数字(字符)的数量,然后分配具有该数量的元素的数组。。请记住,数组从索引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();

尝试这个

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

尝试这个

 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');
         }
     }

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM