我想知道如何从数字中提取数字。
我能想到的唯一方法是将数字转换为字符串,然后使用substring() - 然后转换回int。
是否有更有效的方法,以便获得像substring()方法一样的特定数字,但对于int或BigInteger?
答案 0 :(得分:2)
要了解如何操作,请考虑以下事项:
k
之前的所有数字(从数字背面开始计算),请计算x % pow(10, k+1)
k
x / pow(10, k)
位数
现在,您可以构建一个方法来删除初始部分并根据需要删除结束部分以计算子字符串。请注意,通过将10
替换为数字的基数(即2
表示二进制数,16
表示十六进制数,等等,可以将同一技巧应用于十进制以外的数字表示,依此类推)。
答案 1 :(得分:2)
如果您指的是从1, 2, 3, 4
中提取1234
,则可以使用模运算符%
,如下所示:
int i = 1234;
while (i > 0) {
System.out.println(i % 10);
i = i / 10;
}
这将打印4, 3, 2, 1
。要以相反的顺序获取它们,您可以使用堆栈来推送值并弹出它们。
答案 2 :(得分:0)
你想要做的是这样的事情:
int current = number;
do {
System.out.println((current % 10));
current = current / 10;
} while (currrent > 0);