gpt4 book ai didi

java - 两个大数相加 pt.2

转载 作者:行者123 更新时间:2023-12-02 06:18:17 26 4
gpt4 key购买 nike

所以在我最后一个问题的代码中是一个错误。我尝试修改代码,将两个大数字添加为两个数组(我不能为此使用 BigIntiger,我必须自己创建该方法)。但它仍然给我错误的加法结果。

例如(我已经有这个的构造函数):

BigNumber dl1 = new BigNumber(1500);
BigNumber dl2 = new BigNumber("987349837937497938943242");

dl3 = dl1.add(dl2);
System.out.println("Result: " + dl3);

它给了我 6575,这是错误的结果。

public BigNumber add(BigNumber num2){

char[] m = null;
long y = 0;
long x = 0;
boolean tmpBool = false;
boolean leftIsBigger = false;
String tmpString = "";
int ending = 0;

if (this.n.length >= num2.n.length){
m = new char[this.n.length + 1];
y = num2.n.length;
x = this.n.length;
leftIsBigger = true;
}
else{
m = new char[this.n.length + 1];
y = this.n.length;
x = num2.n.length;
}

for(int i = 0; i < y; i++){
int left = 0;
if(leftIsBigger) left = Character.getNumericValue(this.n[i]);
else left = Character.getNumericValue(num2.n[i]);

for(int j = 0; j < y; j++){
int right = 0;
if(!leftIsBigger) right = Character.getNumericValue(num2.n[j]);
else righta = Character.getNumericValue(this.n[j]);

int z = left + right;

if(tmpBool){
z++;
tmpBool = false;
}
if(z > 9){
tmpBool = true;
z = z%10;
}
m[i] = Character.forDigit(z, 10);
}

ending++;
}

for(int k = ending; k < m.length - 1; k++){
if (leftIsBigger){
if (tmpBool){
int c = Character.getNumericValue(this.n[k]);
if (c > 9){
tmpBool = true;
c = c%10;
m[k] = Character.forDigit(c, 10);
}
else{
tmpBool = false;
m[k] = Character.forDigit((c+1), 10);
}
}
else
m[k] = this.n[k];
}else{
if (tmpBool){
int c = Character.getNumericValue(liczba2.n[k]);
if (c > 9){
tmpBool = true;
c = c%10;
m[k] = Character.forDigit(c, 10);
}
else{
tmpBool = false;
m[k] = Character.forDigit((c+1), 10);
}
}
else
m[k] = this.n[k];
}
}
for (int it = m.length - 1; it >= 0; it--){
tmpString += m[it];
}

BigNumber dl = new BigNumber(tmpString);
return dl;
}

最佳答案

问题是不是在您最初的 if 语句(检查内部数组长度的语句)中的 else 中将 m char 数组初始化为 this.n 而不是 num2.n 的长度?

编辑:另外,您设置迭代的方式,我假设您的内部数组从左到右?如索引 0 是 10^0,索引 1 是 10^1,索引 2 是 10^2 等等?否则这也会是一个问题。请注意,这意味着您必须在 String 类型构造函数中恢复内部 String char 数组。

关于java - 两个大数相加 pt.2,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21257488/

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