Java數組擴容后輸出結果異常:為什么我的程序打印出10 11 12 13而不是1 2 3 4?

Java數組擴容與異常輸出:為什么打印結果是10、11、12、13而不是1、2、3、4?

本文分析一個Java數組擴容示例中出現的異常輸出問題。程序意圖是動態向數組添加元素,但輸出結果與預期不符。

問題描述: 程序旨在將元素4添加到初始數組int[] arr = {1, 2, 3}的末尾,使其變為 {1, 2, 3, 4}。程序通過創建新數組,復制原數組元素,添加新元素,再將新數組賦值給原數組變量的方式實現擴容。然而,程序輸出的結果卻是10、11、12、13,而非預期的1、2、3、4。

Java數組擴容后輸出結果異常:為什么我的程序打印出10 11 12 13而不是1 2 3 4?

代碼分析: 程序的擴容邏輯本身是正確的。問題出在輸出語句System.out.println(arr1[i] + ‘t’);中使用了制表符’t’。Java會將字符’t’隱式轉換為其ASCII碼值(9),導致程序實際執行的是arr1[i] + 9,從而輸出10、11、12、13。

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

錯誤代碼片段:

public class AddToArray {     public static void main(String[] args) {         int arr1[] = {1, 2, 3};         int arr2[] = new int[arr1.length + 1];          for (int i = 0; i < arr1.length; i++) {             arr2[i] = arr1[i];         }         arr2[arr1.length] = 4;         arr1 = arr2; // 關鍵:將新數組賦值給原數組變量          for (int i = 0; i < arr1.length; i++) {             System.out.println(arr1[i] + 't'); // 錯誤:這里加了制表符         }     } }

解決方案: 為了得到正確的結果,只需修改輸出語句,去除制表符:

System.out.println(arr1[i]); // 正確:去除制表符

修正后的代碼:

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

修正后的代碼將正確打印出1、2、3、4。 這個例子強調了在Java中進行字符串連接和數值運算時,需要仔細注意數據類型轉換和隱式類型轉換帶來的潛在問題。

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

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