如何在Java中检查BigInteger的每个数字?

如何在Java中检查BigInteger的每个数字?,java,biginteger,Java,Biginteger,如何检查Java中BigInteger的每个数字(System.out.println()例如,每个数字)?除了将其转换为字符串之外,还有其他方法吗?似乎不提供任何功能。此外,数字很可能不在基数10中表示(因为这样做效率很低)。因此,检查BigInteger的十进制数字的唯一方法很可能是查看其字符串表示形式。您当然可以使用基本数学计算每个数字。尤其是方法divideandmainder在这里可能会有所帮助。但我怀疑,这是否比转换为字符串并检查字符更有效BigIntegermath毕竟比普通的in

如何检查Java中BigInteger的每个数字(
System.out.println()
例如,每个数字)?除了将其转换为字符串之外,还有其他方法吗?

似乎不提供任何功能。此外,数字很可能不在基数10中表示(因为这样做效率很低)。因此,检查BigInteger的十进制数字的唯一方法很可能是查看其字符串表示形式。

您当然可以使用基本数学计算每个数字。尤其是方法
divideandmainder
在这里可能会有所帮助。但我怀疑,这是否比转换为字符串并检查字符更有效
BigInteger
math毕竟比普通的
int
long
math更昂贵。

我认为唯一的方法是将其转换为字符串并验证每个字符。以下是一个例子:

BigInteger bigInteger = new BigInteger("123");
String bigIntegerValue = bigInteger.toString();
for(int i = 0; i < bigIntegerValue.length(); i++) {
    System.out.println(bigIntegerValue.charAt(i));
}
biginger biginger=新的biginger(“123”);
字符串bigIntegerValue=bigInteger.toString();
对于(int i=0;i
获取数字的每一位所需的操作似乎非常简单。 创建一个循环,跟踪数字是否大于10,然后对其执行mod 10操作,然后除以10

 while (num >10)
{
     System.out.println(num%10);
     num = num/10;

}

也许你可以试着用这样的方法检查biginteger中的每一位

 BitSet bitSet = BitSet.valueOf(bigInteger.toByteArray());

直接代码从最后一位到第一位打印数字:

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);
}

BigInteger的数字可能不存储在基数10中,因此除了检查字符串表示形式的字符之外,可能没有其他方法。只有字符串可以保存BigInteger可以处理的数字。BigInteger可以转换为整数数组吗?那么对于
BigInteger
,它也会很有用,您需要这些方法,
mod
除以
比较
,而不是运算符。但原则上这是可行的。您还需要适应高阶数字。