如何将具有不同位数的整数的数组表示相加?

时间:2014-10-10 01:10:29

标签: java arrays add

如何使用数组将两个具有不同位数的整数加在一起,而不会导致越界异常?

例如:500 + 99 每个数字都是数组的元素

这就是我现在正在做的事情:

 int aIILength = infiniteInteger.length-1;
 int bIILength = anInfiniteInteger.infiniteInteger.length-1;
 for(int f = aIILength; f >0; f--){

        int aTempNum = infiniteInteger[f];


        int bTempNum = anInfiniteInteger.infiniteInteger[f];

        result = aTempNum + bTempNum;

        //array representation of sum
        tempArray[f] = result;

    }

1 个答案:

答案 0 :(得分:1)

让循环中的计数器从1开始,然后用它来访问每个数组末尾的数字。

你需要一个进位来保持添加每组数字的溢出。

循环,直到两个数组中的数字都用尽,并且进位为零。

访问数组中的数字时检查范围,当数字用完时使用零。

int aIILength = infiniteInteger.length;
int bIILength = anInfiniteInteger.infiniteInteger.length;
int carry = 0;
for(int f = 1; f <= aIILength || f <= bIILength || carry > 0; f++){
  int aTempNum;
  if (f <= aIILength) {
    aTempNum = infiniteInteger[aIILength - f];
  } else {
    aTempNum = 0;
  }
  int bTempNum;
  if (f <= bIILength) {
    bTempNum = anInfiniteInteger.infiniteInteger[bIILength - f];
  } else {
    bTempNum = 0;
  }
  result = aTempNum + bTempNum + carry;
  tempArray[tempArray.length - f] = result % 10;
  carry = result / 10;
}

注意:使tempArray比两个操作数数组都长,这样它就有可能进位到下一个数字。