我正在开发一个场景,其中我必须在Java中实现BODMAS,操作数可能有多达1000个数字。所以我选择以下面的方式实现它 - 我将中缀表达式(将在其上实现BODMAS的表达式)转换为后缀 然后我通过解析它拥有的每个BigInteger来评估后缀表达式。 我在这个实现中取得了成功。
现在我知道我不能使用BigInteger并且必须处理基本数据类型,如int,string等。
我一直在思考如何做到这一点,坦率地说,没有取得任何重大进展。
有关如何使用基本数据类型实现BigInteger的任何帮助或建议都会有很大帮助。
答案 0 :(得分:2)
实现大整数的一种简单方法是将它们存储为十进制数字数组,例如。 1234可以表示为:
int[] bignum = new int[] {1, 2, 3, 4};
您需要实现手写加法,减法,乘法,除法以及其他任何需要的东西。
您可能会发现将数字“反转”存储可能会更容易,因此请将1234存储为:
int[] bignum = new int[] {4, 3, 2, 1};
更高级的实现将使用base 2 ^ 32或比base 10大得多的东西。
答案 1 :(得分:2)
以下是Open JDK中BigInteger的免费实现。它被GPL2覆盖(这是一个问题吗?)
即使您无法复制和粘贴它,您也可以了解如何在int []数组中存储和操作这些位。
替代方案可能是来自CERN的colt库。至少它可以处理巨大的位域。
修改强>
在找到BODMAS的含义后(认为它是一个密码算法或其他东西,必须在一个特殊的和有限的JDK上完成;-))),我猜小马的建议是不合适的;)
我不删除这个答案,即使现在我认为,p1NG对使用(或重新实现)BigInteger没有“合法”限制......