如何检查Java中BigInteger的每个数字(例如System.out.println()
)?除了将其转换为字符串之外还有其他方法吗?
答案 0 :(得分:4)
直接代码打印从最后到第一个的数字:
private static void printDigits(BigInteger num) {
BigInteger[] resultAndRemainder;
do {
resultAndRemainder = num.divideAndRemainder(BigInteger.TEN);
System.out.println(Math.abs(resultAndRemainder[1].intValue()));
num = resultAndRemainder[0];
} while (num.compareTo(BigInteger.ZERO) != 0);
}
答案 1 :(得分:1)
BigInteger
API docs似乎没有提供任何功能。而且,这些数字很可能没有在基数10中表示(因为它效率很低)。因此,检查BigInteger的十进制数字的唯一方法是查看其字符串表示。
答案 2 :(得分:1)
您当然可以使用基本数学来计算每个数字。特别是方法divideAndRemainder
可能会有所帮助。但我怀疑,这比转换为字符串和检查字符更有效。毕竟BigInteger
数学比普通int
或long
数学更昂贵。
答案 3 :(得分:0)
我认为你能做到的唯一方法是将它转换为String并验证每个char。这是一个例子:
BigInteger bigInteger = new BigInteger("123");
String bigIntegerValue = bigInteger.toString();
for(int i = 0; i < bigIntegerValue.length(); i++) {
System.out.println(bigIntegerValue.charAt(i));
}
答案 4 :(得分:0)
也许你可以尝试使用像这样的BitSet检查你的biginteger中的每一位,
BitSet bitSet = BitSet.valueOf(bigInteger.toByteArray());
答案 5 :(得分:-1)
看起来很简单你需要做的是得到一个数字的每个数字。 创建一个循环,跟踪你的数字是否大于10,然后在其上执行mod 10操作,然后除以10。
while (num >10)
{
System.out.println(num%10);
num = num/10;
}