Java數組擴容后輸出結果異常:為什么我的數組元素值都比預期大了9?

Java數組擴容后輸出結果異常:為什么我的數組元素值都比預期大了9?

Java數組擴容及數據輸出異常分析

本文分析一段Java代碼中數組擴容后輸出結果異常的原因。代碼意圖是對整數數組進行擴容,添加新元素。原始數組為{1, 2, 3},添加元素4后,預期結果為{1, 2, 3, 4},但實際輸出卻是{10, 11, 12, 13}。

問題代碼及分析:代碼使用創建新數組的方式擴容。首先創建一個比原數組長度大一的數組arr2,復制arr1元素到arr2,然后添加新元素4。最后將arr2賦值給arr1,完成擴容。

問題代碼片段:

立即學習Java免費學習筆記(深入)”;

public class ArrayExpand {     public static void main(String[] args) {         int arr1[] = {1, 2, 3};         int arr2[] = new int[arr1.length + 1];          System.arraycopy(arr1, 0, arr2, 0, arr1.length); //更優的數組復制方式         arr2[arr1.length] = 4;         arr1 = arr2;          for (int i = 0; i < arr1.length; i++) {             System.out.print(arr1[i] + "t"); //問題出在這里         }     } }

錯誤原因:問題不在擴容邏輯,而在于輸出語句System.out.print(arr1[i] + “t”);。”t”是制表符,ASCII碼為9。輸出語句將數組元素與制表符的ASCII碼值進行了隱式加法運算,導致輸出結果比預期值大9。

解決方案:修改輸出語句,去除制表符:System.out.print(arr1[i] + ” “); 或者 System.out.println(arr1[i]);。

修改后的代碼:

public class ArrayExpand {     public static void main(String[] args) {         int arr1[] = {1, 2, 3};         int arr2[] = new int[arr1.length + 1];          System.arraycopy(arr1, 0, arr2, 0, arr1.length);         arr2[arr1.length] = 4;         arr1 = arr2;          for (int i = 0; i < arr1.length; i++) {             System.out.print(arr1[i] + " "); //修改后的輸出語句         }     } }

結論:此問題強調了代碼細節的重要性。細微的錯誤,例如不恰當使用制表符導致隱式類型轉換和運算,都會造成程序輸出結果的偏差。 我們應該避免不必要的隱式類型轉換和字符運算,以確保代碼的準確性和可靠性。 此外,使用System.arraycopy()方法比循環復制更有效率。

以上就是Java數組擴容后輸出結果異常:

? 版權聲明
THE END
喜歡就支持一下吧
點贊11 分享