如何在跟踪进位的同时获得两个数组的总和(如 java 中的 bigInt)?

How do you get the sum of two arrays while keeping track of carry (like bigInt in java)?

我仍在学习编程,我正在尝试添加两个数组 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; 
}

请帮忙!

如评论中所述,您需要记住 carry 从一位到下一位的值。此外,在没有数字溢出时清除 carry 也很重要。最后,如果在循环结束时设置了 carry,则总和太大而无法放入数组中。

static int[] sum(int[] A, int[] B)
{
  int index = SIZE -1; 
  int[] newBI = new int[SIZE];
  int carry = 0;
  while(index >=0)
  {   
      int sum = A[index] + B[index] + carry;
      if(sum >= 10) {
          carry = sum/10;
          sum = sum %10; 
      }
      else
      {
        // important to clear the carry
        carry = 0;
      }
      newBI[index] = sum; 
      index--; 
  }
  if(carry == 1)
  {
    throw new ArithmeticException();
  }
  return newBI; 
}