首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計綜合問答

Java 大整數相加數組越界異常:原因與修復

     編輯:程式設計綜合問答

使用數組模擬大整數加法時,初學者常遇到 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];

完整修正邏輯要點

  1. 結果數組長度取 max(m, n) + 1 預留進位位
  2. 從個位(數組末尾)向高位遞推,或反轉數組後從 0 開始
  3. 最後去除前導零,輸出有效位

進階建議

  • 實際項目中直接使用 java.math.BigInteger,一行代碼解決:new BigInteger(a).add(new BigInteger(b))
  • 若為學習目的,可封裝 BigIntAdder 工具類,內部用 ArrayList 動態擴容

數組越界是 C/C++/Java 初學者最常見錯誤之一,養成「先定長度、再訪問」的習慣至關重要。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved