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