如何 'pre increment' Java 中的 BigInteger?

How to 'pre increment' a BigInteger in Java?

我有一个带有 BigIntegerfor 循环,像这样:

for(BigInteger a = BigInteger.valueOf(1); a.compareTo(someBigInteger); ++a) {...

显然我不能在非基元上使用 ++ 运算符。我该如何解决这个问题?

此外,我必须在这种情况下使用 BigInteger

++a 是前缀增量,而不是后缀增量,但在 for 循环的上下文中它并不重要,因为您无论如何都会忽略该语句的 return 值.无论如何,可以通过调用 BigInteger.add 来实现此功能。另请注意 compareTo returns 和 int,并且由于 Java 在 ints 和 booleans 之间没有隐式转换(例如,例如,C 会),您必须将其结果与 0 进行比较,以查看 a 是否小于、大于或等于 someBigInteger):

for (BigInteger a = BigInteger.ONE; 
     a.compareTo(someBigInteger) < 0; 
     a = a.add(BigInteger.ONE)) {...

您无法重新定义运算符 ++ 以使用 BigInteger,因此解决方案很简单: 1)首先声明一个BigInteger并初始化它 2) 在循环中,重新赋值BigInteger(调用add方法时会创建一个新的BigInteger);

private static final BigInteger LIMIT = new BigInteger("10");
public static void main(String[] args) {
    new BigInteger("0");    
    for (BigInteger a = BigInteger.ZERO; a.compareTo(LIMIT) < 0; a = a.add(new BigInteger("1")))
        System.out.println(a);
}

参考文档http://docs.oracle.com/javase/8/docs/api/java/math/BigInteger.html#add(java.math.BigInteger)

你可以这样。

for(BigInteger a = BigInteger.ONE; a.compareTo(someBigInteger); a=a.add(BigInteger.ONE)) {.