将数字中的数字设置到数组中的特定位置

本文关键字:数字 定位 位置 设置 数组 | 更新日期: 2023-09-27 17:58:50

我正在尝试将数字[0..999]实现到数组中的某个位置。示例:

number: 9 - array: 009 /// number 78 - array 078 /// number 245 - array 245.

这是我的源代码,它很有效,但有没有更简单的方法来完成这项任务,在数字更大的情况下可能会有用?

uint check;
uint[] number= new uint[3];
while (true)
{
  Console.WriteLine("Input number");
  string input = Console.ReadLine();
  if (uint.TryParse(input, out check))
  {
    if (check < 10)
    {
      number[2] = Convert.ToUInt32(Convert.ToString(input[0]));
      break;
    }
    else if (check < 100)
    {
      number[1] = Convert.ToUInt32(Convert.ToString(input[0]));
      number[2] = Convert.ToUInt32(Convert.ToString(input[1]));
      break;
    }
    else if (check < 1000)
    {
      number[0] = Convert.ToUInt32(Convert.ToString(input[0]));
      number[1] = Convert.ToUInt32(Convert.ToString(input[1]));
      number[2] = Convert.ToUInt32(Convert.ToString(input[2]));
      break;
    }
    else
    {
      Console.WriteLine("Out of range. Try again");
    }
  }
}

将数字中的数字设置到数组中的特定位置

您可以使用模运算符,如下所示:

if (uint.TryParse(input, out check))
{
   if (check < 1000)
   {
     number[2] = check % 10; //gets last digit
     check /= 10; //"shaves off" last digit
     number[1] = check % 10;
     check /= 10; 
     number[0] = check % 10; 
   }
   else
   {
     Console.WriteLine("Out of range. Try again");
   }
}

请注意,通过这种方式,您可能能够数字化任意大的数字,而不仅仅是低于1000的数字,代码如下:

List<int> digits = new List<int>();
if (uint.TryParse(input, out check))
{
   while (check != 0)
   {
      digits.Insert(0, check % 10);
      check /=10;
   }
}
int[] digitsArray = digits.ToArray();

也许这个方法会有所帮助。它将给定的number转换为数字数组:

private static int[] NumberToArray(int number)
{
    int[] digits = new int[(int)(Math.Log10(number) + 0.999999)];
    int i = digits.Length - 1;
    while (number >= 10)
    {
        int rem;
        number = Math.DivRem(number, 10, out rem);
        digits[i--] = rem;
    }
    digits[0] = number;
    return digits;
}

此处,由于Math.DivRem而使用的int类型仅接受签名类型