将数字中的数字设置到数组中的特定位置
本文关键字:数字 定位 位置 设置 数组 | 更新日期: 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
类型仅接受签名类型