使用BigInteger类运行错误

时间:2016-01-27 01:54:23

标签: java biginteger jgrasp

我目前正在使用BigInteger类为我的一个班级做作业。我遇到的问题是使用.pow方法。它给了我这个错误 BigNumberExample1.java:25:错误:不兼容的类型:BigInteger无法转换为int       BigInteger input4 =(a.pow(b).mod(n));

// Use sort for date and then use it again for upvotes_count
Post.find()
    .sort({_id: -1})
    .sort({upvotes_count: -1})
    .limit(3)
    .exec( function(err, posts) {
        if (err) res.send(err);
        console.log(posts);
        res.json(posts);
     });

// Use sort for date, limit the results to three, and then
// use it again for upvotes_count
Post.find()
    .sort({_id: -1})
    .limit(3)
    .sort({upvotes_count: -1})
    .exec( function(err, posts) {
        if (err) res.send(err)
        console.log(posts);
        res.json(posts);
    });

// Use sort for date and upvotes_count in one step.
Post.find()
    .sort({_id: -1, upvotes_count: -1})
    .limit(3)
    .exec( function(err, posts) {
        if (err) res.send(err);
        console.log(posts);
        res.json(posts);
     });

3 个答案:

答案 0 :(得分:1)

如果看到document,则在pow()中需要一个int值:

pow(int exponent)

所以:

a.pow(b.intValue()).mod(...)

答案 1 :(得分:1)

问题是BigInteger.pow()需要int而不是BigInteger。由于bBigInteger,您可以执行以下操作:

BigInteger input4 = a.pow(b.intValue()).mod(n);

但如果b大于int,则会中断。您最好的选择是使用BigInteger.modPow(),因为这需要2 BigIntegers。然后你最终得到:

BigInteger input4 = a.modPow(b, n);

答案 2 :(得分:0)

对我来说就像a.pow(b)期待'b'是一个整数,而不是一个大的int

尝试BigInteger input4 =(a.pow(b.intValue())。mod(n));