【发布时间】:2019-03-05 08:04:25
【问题描述】:
我仍在学习编程,我正在尝试添加两个数组 A 和 B,同时跟踪进位。数组都是SIZE = 20,看起来像这样:A = {0,0,..,n}
我下面的代码似乎不起作用,我一生都无法找出错误是什么。例如,如果我添加
A ={0,0,0...,1,2,3} 作为一个数组和
B ={0,0,0,...,7,8,9} 作为数组我得到 802 而不是 912.
代码:
int index = SIZE -1;
int[] newBI = new int[SIZE]
while(index >=0)
{
int carry = 0;
int sum = A[index] + B[index] + carry;
if(sum >=10) {
carry = sum/10;
sum = sum %10;
}
newBI[index] = sum;
index--;
}
return newBI;
}
请帮忙!
【问题讨论】:
-
每次启动 while 循环时,将
carry初始化为 0,然后将其添加到总和中。然后,您不会对在if语句中计算的carry执行任何操作。 (您可能想在循环外声明carry。) -
您的任务是否要求您考虑这样一个事实,即数组可能以另一个进位在左侧结束,因此需要比两个原件多一个长度?例如:{9,9,9} + {9,9,9} = {1,9,9,8}
-
确保您在程序中不是从左到右进行计算,而是从右到左进行计算。
-
@MichaelBerry 他还需要一个
else,如果没有carry将其设置为0。 -
从技术上讲,
if和else都不需要。如果两者都被排除,整数运算将自行处理。在计算的总和中,carry = sum / 10始终为左数或零,sum = sum % 10始终为右数。