我需要创建一个函数,如果有两个元素,其总和等于作为参数传递的随机长数,则搜索具有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;
答案 0 :(得分:0)
可悲的是,这就是大数字算法在Java中的运作方式。 Java中的算术运算符仅适用于原始数字类型,因此要在表示数字的对象上执行它,需要使用方法来完成。
某些JVM语言确实利用了运算符重载(Kotlin,Groovy,Scala),但这是Java语言没有规划的功能。