java:BigInteger情况下for循环如何工作

java:BigInteger情况下for循环如何工作,java,biginteger,Java,Biginteger,我想把用户的输入作为一个大整数,并把它处理成一个For循环 BigInteger i; for(BigInteger i=0; i<=100000; i++) { System.out.println(i); } biginger i; 对于(BigInteger i=0;i您可以使用以下语法: BigInteger i = BigInteger.valueOf(100000L); // long i = 100000L; i.compareTo(BigInteger.ONE)

我想把用户的输入作为一个大整数,并把它处理成一个For循环

BigInteger i;
for(BigInteger i=0; i<=100000; i++) {
    System.out.println(i);
}
biginger i;

对于(BigInteger i=0;i您可以使用以下语法:

BigInteger i = BigInteger.valueOf(100000L);  // long i = 100000L;
i.compareTo(BigInteger.ONE) > 0              // i > 1
i = i.subtract(BigInteger.ONE)               // i = i - 1
下面是一个将其组合在一起的示例:

    for (BigInteger bi = BigInteger.valueOf(5);
            bi.compareTo(BigInteger.ZERO) > 0;
            bi = bi.subtract(BigInteger.ONE)) {

        System.out.println(bi);
    }
    // prints "5", "4", "3", "2", "1"
请注意,使用
biginger
作为循环索引是非常不典型的。
long
通常就足够了

API链接

compare to
习惯用法 从文件中:


对于六个布尔比较运算符(
=
!=
)中的每一个,提供此方法比单独的方法更优先。我认为此代码应该可以工作

public static void main(String[] args) {
    BigInteger bigI = new BigInteger("10000000");
    BigInteger one = new BigInteger("1");

    for (; bigI.compareTo(one) == 0; bigI.subtract(one)) {
       bigI = bigI.add(one);
    }
}

首先,你有两个变量,叫做“i”

第二,用户输入在哪里

第三,i=i+i将i解装箱到一个原语值中,可能会使其溢出,并将结果装箱到一个新对象中(也就是说,如果语句甚至编译了,我没有选中)

第四,i=i+i可以写成i=i.multiply(biginger.valueof(2))

第五,循环永远不会运行,因为这可能会起作用

BigInteger i;
        for(i = BigInteger.valueOf(0);i.compareTo(new BigInteger("100000")) 
            <=0;i=i.add(BigInteger.ONE))
        {
            System.out.println(i);
        }
biginger i;
对于(i=BigInteger.valueOf(0);i.compareTo(新的BigInteger(“100000”))

重新格式化的代码;如果不正确,请还原。它看起来很奇怪:它增长得很奇怪(i=i+i-1)…而且它不是BigInteger,我声明了两次;我认为这不会编译。我故意没有解决您代码片段的奇怪之处(其他人已经这样做了)但是,试着回答一个关于
biginger
用法的更一般的问题。如果你能解释一下你要做什么,我可以看看我们是否遗漏了什么。没有使用
biginger
bigI进行自动装箱/取消装箱。减法(一)
实际上不“做”总之,是的,对不起,它应该将bigI设置为results,这样将从5迭代到1。但是如果我想编写for循环,该循环从0迭代到4,包含5个值,该怎么办?我可以这样做吗?
s = s.trim();
bi = bi.add(BigInteger.ONE);
public static void main(String[] args) {
    BigInteger bigI = new BigInteger("10000000");
    BigInteger one = new BigInteger("1");

    for (; bigI.compareTo(one) == 0; bigI.subtract(one)) {
       bigI = bigI.add(one);
    }
}
BigInteger i;
        for(i = BigInteger.valueOf(0);i.compareTo(new BigInteger("100000")) 
            <=0;i=i.add(BigInteger.ONE))
        {
            System.out.println(i);
        }
for(BigInteger i = BigInteger.valueOf(0);i.compareTo(new BigInteger("100000")) 
            <=0;i=i.add(BigInteger.ONE))
        {
            System.out.println(i);
        }