我一直在互联网上搜索一段时间但是找不到我要找的东西。
让我先从一些代码示例开始:
int a = 25;
int b;
int c;
我想在这里做的是想要拆分a
变量并将这两个值分配给变量b
和c
。结果将是int b = 2
和int c = 5
,反之亦然(在我打算使用此功能的目的无关紧要。)
你怎么能这样做?
答案 0 :(得分:6)
您可以使用整数除法和模数:
int b = a / 10;
int c = a % 10;
如果变量a
包含较大的数字,您首先要确定每个变量中需要多少位数。例如,如果您想要c
中的两位数,则在两个操作中都使用100
作为第二个操作数。
答案 1 :(得分:5)
您可以使用以下代码执行此操作:
int input = 123845;
var digits = input.ToString().Select(x=>int.Parse(x.ToString()));
首先将您的输入数字转换为字符串。然后,它在传递给Select
时将此字符串视为字符数组。然后它将char转换为字符串,然后将其解析为int,从而产生IEnumerable<int>
。
值得注意的是,如果您的输入为负数,则此操作无效(它会抱怨-
)。如果你愿意的话,在开始时检查“ - ”并不会太难。
另一种方法是不断除以10逐一取出所有数字。
public IEnumerable<int> GetDigits(int input)
{
int currentNumber = input;
List<int> digits = new List<int>();
while (currentNumber !=0)
{
digits.Add(currentNumber%10);
currentNumber = currentNumber/10;
}
digits.Reverse();
return digits;
}
这会遍历将最后一位数字添加到列表中的数字。然后它返回反向列表。这确实处理了负数,如果输入为负,则所有输出数字都将为负数。
一个重要的注意事项是,这两种方法都将处理两位以上的输入数字。
答案 2 :(得分:0)
int a = 12345;
a = Math.Abs(a);
int length = a.ToString().Length;
int[] array = new int[length];
for (int i = 0; i < length; i++)
{
array[i] = a % 10;
a /= 10;
}