我想知道C#中是否有一种方法可以将整数转换为数字数组,这样我就可以对每个数字执行(数学)运算。
示例:我需要用户输入一个整数,123
,456
然后程序创建两个包含三个元素{1,2,3}
,{4,5,6}
。
答案 0 :(得分:11)
脱离我的头顶:
int i = 123;
var digits = i.ToString().Select(t=>int.Parse(t.ToString())).ToArray();
答案 1 :(得分:4)
您可以创建此类数组(或List
)以避免字符串操作,如下所示:
int x = 123;
List<int> digits = new List<int>();
while(x > 0)
{
int digit;
x = Math.DivRem(x, 10, out digit);
digits.Add(digit);
}
digits.Reverse();
不使用List
和List.Reverse
int x = 456;
int[] digits = new int[1 + (int)Math.Log10(x)];
for (int i = digits.Length - 1; i >= 0; i--)
{
int digit;
x = Math.DivRem(x, 10, out digit);
digits[i] = digit;
}
使用ToString
的另一种方式:
int x = 123;
int[] digits = Array.ConvertAll(x.ToString("0").ToCharArray(), ch => ch - '0');
答案 2 :(得分:0)
您可以使用此功能而不是转换为字符串:
var digits = new List<int>();
var integer = 123456;
while (integer > 0)
{
digits.Add(integer % 10);
integer /= 10;
}
digits.Reverse();