我使用下面的代码来找到完美平方数字,但不能做像BigInteger
s这样的大数字,另一个问题是我不能创建完美循环
Scanner in = new Scanner(System.in);
int q = in.nextInt();
BigInteger[] l = new BigInteger[q];
BigInteger[] r = new BigInteger[q];
int[] num = new int[q];
for (int i = 0; i < q; i++) {
l[i] = in.nextBigInteger();
r[i] = in.nextBigInteger();
num[i]=0;
for (BigInteger j = l[i]; j.compareTo(r[i]) > 0; j.add(BigInteger.ONE)) {
**This loop doesn't work**
}
}
这里有两个问题。首先,假设j
开始时比r[i]
小,则条件相反——只要它更小,j.compareTo(r[i]
就会返回一个小于零而不大于零的值。其次,add
不修改BigInteger
实例,它返回一个新的BigInteger
和加法的结果(即,您可以认为它是+
运算符,而不是+=
运算符(。
简而言之,这就是你的循环应该是什么样子:
for (BigInteger j = l[i]; j.compareTo(r[i]) < 0; j = j.add(BigInteger.ONE)) {
// Code goes here...