首页
学习
活动
专区
圈层
工具
发布

乘BigInt
EN

Stack Overflow用户
提问于 2014-04-01 08:17:19
回答 2查看 478关注 0票数 0
代码语言:javascript
复制
int SIZE = 512;        
p = new BigInteger(SIZE, 15, new Random());
q = new BigInteger(SIZE, 15, new Random());
r = new BigInteger(SIZE, 15, new Random());

n = p.multiply(q);
temp1=n;
n = n.multiply(r);
   if (temp1.multiply(r)!=n) System.out.println("test");

我的代码在不应该打印test的时候打印出来。为什么?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-04-01 08:20:32

您必须使用equals来比较对象相等。

!===比较引用。

代码语言:javascript
复制
BigInteger b0 = new BigInteger("0");
BigInteger b1 = new BigInteger("0");
System.out.println(b0 != b1);
System.out.println(!b0.equals(b1));

输出

代码语言:javascript
复制
true
false
票数 5
EN

Stack Overflow用户

发布于 2014-04-01 08:21:15

根据这一执行情况:

代码语言:javascript
复制
public BigInteger multiply(BigInteger val) {
    if (val.signum == 0 || signum == 0)
        return ZERO;

    int[] result = multiplyToLen(mag, mag.length,
                                 val.mag, val.mag.length, null);
    result = trustedStripLeadingZeroInts(result);
    return new BigInteger(result, signum == val.signum ? 1 : -1);
}

temp1.multiply(r)返回一个新的 BigInteger对象,它将具有与n不同的地址。使用!temp1.multiply(r).equals(n)

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22780293

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档