2014-10-10 46 views
0

如何使用數組將兩個具有不同數字位數的整數相加,而不會導致越界異常?如何將具有不同位數的整數的數組表示法相加?

例如: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; 

    } 
+0

你在用什麼語言工作? – 2014-10-10 01:15:36

+0

@JonB good ol java – 2014-10-10 01:18:09

回答

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比兩個操作數列長,所以它有地方的潛在進到下一個數字。

+0

謝謝!這很好。 – 2014-10-10 01:45:21

相關問題