要反转整数并将其放入列表,可以执行以下操作(其中x是某个整数):
int lastDigit = x;
while(lastDigit != 0)
{
list.add(lastDigit % 10);
lastDigit /= 10;
}
因此,如果x为502,则会将2 0和5添加到列表中。
这显然非常有用,但直到昨天我认为做这样的事情的唯一方法是首先将int转换为字符串。
我不确定这是否只是常识,但我今天才看到这种方法。我想了解它是如何工作的,而不仅仅是记住它。
有人可以解释为什么数字模数10给出最后一位数,为什么将它除以10得到下一次迭代的下一个数字?为什么它最终会等于0?
答案 0 :(得分:0)
模数运算符为您提供除法计算的余数。
502%10是2,因为502/10 = 50加上余数2。 因此,此计算中的余数为2,表示将2添加到列表中。
下一行中除以10的除法是使用整数运算执行的,因此502/10得到50的结果。
任何小于10的非负数都会得到零结果,结束循环。
答案 1 :(得分:0)
将% 10
视为十进制系统中最不重要(最右边)的数字(因此10
)。
然后将/ 10
视为将所有数字向右移位(也是十进制)。您显然必须这样做,直到数字为0
。在这种情况下,所有剩余的数字都可以理解为前导零。
在二进制系统中,您还可以使用按位运算& 1
和>> 1
,而不是模数(% 2
)和整数(/ 2
)除法。
列表追加操作(此处为add
)是反转订单的操作。上述操作仅用于提取单个数字。