使用數組模擬大整數加法時,初學者常遇到 ArrayIndexOutOfBoundsException。本文分析典型錯誤代碼,指出根因並給出正確寫法。
int[] Adata = {3,2,5,1,2,3,4,3};
int[] Bdata = {6,4,3,2,4,5,6};
int[] Cdata = {}; // 錯誤:長度為 0 的空數組
int i = 0;
while (i < n && i < m) {
Cdata[i] = (Adata[i] + Bdata[i] + flag) % 10; // 直接訪問 Cdata[i] 拋出異常
// ...
}
int[] Cdata = {} 創建的是長度為 0 的數組,Cdata.length == 0。隨後代碼嘗試寫入 Cdata[i],直接導致下標越界。
預先分配足夠大小的數組:
// 最大可能長度 = max(A.length, B.length) + 1 (進位)
int maxLen = Math.max(Adata.length, Bdata.length) + 1;
int[] Cdata = new int[maxLen];
max(m, n) + 1 預留進位位java.math.BigInteger,一行代碼解決:new BigInteger(a).add(new BigInteger(b))BigIntAdder 工具類,內部用 ArrayList 動態擴容數組越界是 C/C++/Java 初學者最常見錯誤之一,養成「先定長度、再訪問」的習慣至關重要。