gpt4 book ai didi

java - BigInteger 家庭作业需要帮助

转载 作者:行者123 更新时间:2023-12-01 19:19:31 25 4
gpt4 key购买 nike

有人告诉我必须编写一个 BigInteger 类,我知道有一个类,但我必须编写自己的类。我将采用整数或字符串并将它们转换为数组来存储它们。从那里我将允许对数字进行加法、减法和乘法。我让它获取整数和字符串并制作数组,效果很好。我对其余的有问题。

对于添加,我尝试制作一些东西来检查数字类型数组的大小,然后设置较小和较大的值。从那里开始,我让它循环,直到它到达较小的末尾,并且当它循环时,它将数组的该部分的数字作为两个数字并将它们相加。现在这是可以的,直到它们大于 10,在这种情况下我需要结转一个数字。我想我在某个时候也有这样的工作。

请记住,我的 BigInt 有两件事:数字数组和符号整数(1 或 -1)。

所以在这种情况下,我在添加正确且符号正确时遇到问题。与减法相同。

至于乘法,我完全迷失了方向,甚至没有尝试过。下面是我尝试制作的一些代码:(添加函数),请帮助我。

public BigInt add(BigInt val){

int[] bigger;
int[] smaller;
int[] dStore;
int carryOver = 0;
int tempSign = 1;

if(val.getSize() >= this.getSize()){
bigger = val.getData();
smaller = this.getData();

dStore = new int[val.getSize()+2];

if(val.getSign() == 1){
tempSign = 1;
}else{
tempSign = -1;
}

}else{

bigger = this.getData();
smaller = val.getData();

dStore = new int[this.getSize()+2];

if(this.getSign() == 1){
tempSign = 1;
}else{
tempSign = -1;
}
}


for(int i=0;i<smaller.length;i++){
if((bigger[i] < 0 && smaller[i] < 0) || (bigger[i] >= 0 && smaller[i] >= 0)){
dStore[i] = Math.abs(bigger[i]) + Math.abs(smaller[i]) + carryOver;
}else if((bigger[i] <= 0 || smaller[i] <= 0) && (bigger[i] > 0 || smaller[i] > 0)){
dStore[i] = bigger[i] + smaller[i];
dStore[i] = Math.abs(dStore[i]);
}
if(dStore[i] >= 10){
dStore[i] = dStore[i] - 10;
if(i == smaller.length - 1){
dStore[i+1] = 1;
}
carryOver = 1;
}else{
carryOver = 0;
}
}

for(int i = smaller.length;i<bigger.length;i++){
dStore[i] = bigger[i];
}

BigInt rVal = new BigInt(dStore);
rVal.setSign(tempSign);

return rVal;

最佳答案

如果你知道如何addmultiply手动计算大数字,用 Java 实现这些算法并不困难。

关于java - BigInteger 家庭作业需要帮助,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4988759/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com