(Java)添加两个long,其总和高于long max range

时间:2018-04-17 13:40:52

标签: java methods compare

我需要创建一个函数,如果有两个元素,其总和等于作为参数传递的随机数,则搜索具有2000万个长整数的文件。这些2000万个Longs被加载到ArrayList中。我的问题是:如果我将这两个元素转换为两个长变量,我添加它们然后将结果存储到名为“sum”的通用long变量中,它不起作用,因为总和高于最大范围长型。我怎么解决这个问题?我看到存在一个名为BigInteger的类,但是如此编写它不起作用,我认为它有点混淆作为解决方案:

long n1=Long.valueOf(array.get(0));
long n2=Long.valueOf(array.get(1));
BigInteger sum = new BigInteger(Long.toString(n1)).add(new BigInteger((Long.toString(n2))));
BigInteger element = new BigInteger(Long.toString(elem));
if (sum.compareTo(element)==0) return true;

1 个答案:

答案 0 :(得分:0)

可悲的是,这就是大数字算法在Java中的运作方式。 Java中的算术运算符仅适用于原始数字类型,因此要在表示数字的对象上执行它,需要使用方法来完成。

某些JVM语言确实利用了运算符重载(Kotlin,Groovy,Scala),但这是Java语言没有规划的功能。