【问题标题】:BigInteger(long) has private access in BigIntegerBigInteger(long) 在 BigInteger 中具有私有访问权限
【发布时间】:2014-11-24 02:25:35
【问题描述】:

我正在尝试在 BigInteger 实例中存储一个大计算。我试过这个:

BigInteger answer=new BigInteger(2+3);

并得到以下错误:

temp.java:17: error: BigInteger(long) has private access in BigInteger
                        BigInteger answer=new BigInteger(2+3);
                                          ^
1 error

我知道应该有一个字符串值而不是“2+3”。但我不知道如何满足这个条件(假设我不知道 2+3 是多少)。请告诉我如何将计算值分配给 BigInteger 对象(将 2+3 分配给 BigInteger 答案)。

【问题讨论】:

标签: java private biginteger


【解决方案1】:

如果您想使用BigInteger 执行算术运算,您应该为每个值创建一个BigInteger,然后使用BigInteger.add。但是,您不需要 需要使用字符串来执行此操作。如果您的输入已经是一个字符串并且它可能很长,您可能想要这样做,但是如果您已经有一个long,您可以使用BigInteger.valueOf。例如:

BigInteger answer = BigInteger.valueOf(2).add(BigInteger.valueOf(3));

我当然不会将 long 转换为 String,然后将其传递给 BigInteger 构造函数。

【讨论】:

  • 那么,为什么 OP 应该执行上述操作而不是 BigInteger.valueOf(2+3)
  • @HotLicks:这取决于他们的真实情况。也许他们实际上将字符串作为输入。或者即使他们将 long 值作为输入,他们也可能不希望结果溢出 - 例如,Long.MAX_VALUE + Long.MAX_VALUE
【解决方案2】:

您可以只使用 BigInteger 的 add(...) 方法:

BigInteger answer = new BigInteger("2").add(new BigInteger("3"));

不用担心这个解决方案会溢出。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-07-11
    • 2013-10-27
    • 2023-03-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-15
    相关资源
    最近更新 更多