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

时间:2014-04-17 13:11:17

标签: c# arrays

我正在尝试将数字[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");
    }
  }
}

2 个答案:

答案 0 :(得分:2)

您可以使用模运算符:

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();

答案 1 :(得分:0)

也许这种方法可能会有所帮助。它将给定的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;
}

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