如何创建新的BigInteger变量并创建一个返回BigInteger的方法?

时间:2017-10-18 03:41:47

标签: java biginteger

BigInteger b = BigInteger.valueOf(calcFib(Integer.parseInt(args[0])));

我尝试运行它来为一个大的Fibonacci数创建一个新的BigInteger,但每当我这样做时,会抛出此错误:

error: cannot find symbol

    BigInteger b = BigInteger.valueOf(calcFib(Integer.parseInt(args[0])));
    ^
symbol: class BigInteger

location: class FibonacciCalculator 

如果有帮助,我已经导入了java.lang.Object。我还是编程的新手,所以请不要判断:P

编辑:原文是在main中完成的,但是现在我在导入java.math.BigInteger

之后遇到了这行代码的新问题
public static BigInteger calcFib (int n)
{
    if(n == 1 || n == 2)
        return 1;
    else
    {
        return calcFib(n-1) + calcFib(n-2);
    }
}

if / else语句的两个部分抛出错误,if表示int可以 不能转换为BigInteger,而else表示糟糕的操作数类型。再次对不起我的无知并感谢你的帮助!

2 个答案:

答案 0 :(得分:2)

BigInteger类在java.math.BigInteger内定义,因此请尝试导入java.math.BigInteger

答案 1 :(得分:1)

在问题的第二部分中,如果您使用BinIntegers而不是intlong类型,则需要稍微更改代码,因为您无法做到使用通常的+运算符或自动在intBigInteger之间进行转换。

修改后的代码应如下所示:

public static BigInteger calcFib(int n)
{
    if(n == 1 || n == 2)
        return BigInteger.ONE;
    else
    {
        return calcFib(n - 1).add(calcFib(n - 2));
    }
}

在一个理想的世界中,你可能还会检查零和负数并通过抛出异常来处理它们。