对于Java BigInteger类,有没有办法定义具有多个条件的if语句,由逻辑运算符分隔



这是Java中的一个方法,它将生成一个包含前100,000,000个斐波那契数的ArrayList,这样这些斐波那契数都不能被任何较小的平方数整除。

因此,BigInteger Java类被实现为处理异常大订单的数字。

已经发现,在编写 if 语句时,使用 &&|| 等逻辑运算符不适用于 BigInteger 类,如下面的代码所示。

注释已从代码中删除,以便于在此页面上阅读。

非常感谢您的贡献。

public ArrayList<BigInteger> squareFree () {
    index = 0;
    fibValues_noSqr = fibValues;
    ArrayList<BigInteger> squares = new ArrayList<BigInteger>();
    int sqrScan;
    for (index = 0; index < fibValues_noSqr.size(); index++) {
        squares.add(BigInteger.valueOf(powerOf(index + 2, 2)));
    }
    for (index = 0; index < fibValues_noSqr.size(); index++) {
        for (sqrScan = 0; sqrScan < fibValues_noSqr.size(); sqrScan++) {
            if (squares.get(index).compareTo(fibValues_noSqr.get(sqrScan)) < 0 || squares.get(index).equals(fibValues_noSqr.get(sqrScan)) && fibValues_noSqr.get(sqrScan).remainder(squares.get(index))) {
                fibValues_noSqr.remove(sqrScan);
            }
        }
    }
}

在此场景中,Java 显示以下错误

运算符 && 未定义参数类型布尔值,BigInteger

感谢您@GBlogett和@Compass的回复。

这是工作代码

public ArrayList<BigInteger> squareFree () {
    index = 0;
    fibValues_noSqr = fibValues;
    ArrayList<BigInteger> squares = new ArrayList<BigInteger>();
    int sqrScan;
    for (index = 0; index < fibValues_noSqr.size(); index++) {
        squares.add(BigInteger.valueOf(powerOf(index + 2, 2)));
    }
    for (index = 0; index < fibValues_noSqr.size(); index++) {
        for (sqrScan = 0; sqrScan < fibValues_noSqr.size(); sqrScan++) {
            if (squares.get(index).compareTo(fibValues_noSqr.get(sqrScan)) < 0
             && fibValues_noSqr.get(sqrScan).mod(squares.get(index)) == new BigInteger("0")) {
                fibValues_noSqr.remove(sqrScan);
            }
    }

更新的 if 语句

for (index = 0; index < fibValues_noSqr.size(); index++) {
    for (sqrScan = 0; sqrScan < fibValues_noSqr.size(); sqrScan++) {
        if (squares.get(index).compareTo(fibValues_noSqr.get(sqrScan)) < 0
         && fibValues_noSqr.get(sqrScan).mod(squares.get(index)).equals(BigInteger.ZERO)) {
            fibValues_noSqr.remove(sqrScan);
}

最新更新