陣列擴容

f-52Hertz發表於2024-11-30

一、思路:
新建一個陣列,將以前的陣列值依次放入新陣列中,在新陣列中新增元素;
讓以前陣列等於新陣列,以前陣列的資料空間銷燬;
陣列反轉同理
二、要求:實現動態的給陣列新增元素效果,實現對陣列擴容。ArrayAdd.java
1.原始陣列使用靜態分配 int[]arr={1,2,3}
2.增加的元素4,直接放在陣列的最後 arr={1,2,3,4}
3.使用者可以透過如下方法來決定是否繼續新增,新增成功,是否繼續?y/n
三、思路分析

  1. 定義初始陣列 int[]arr={1,2,3}//下標 0-2
  2. 定義一個新的陣列 int[]arrNew=newint[arr.length+1];
  3. 遍歷 arr 陣列,依次將arr的元素複製到 arrNew陣列
  4. 將 4 賦給 arrNew[arrNew.length- 1] = 4;把 4 賦給arrNew 最後一個元素
  5. 讓 arr 指向 arrNew; arr=arrNew; 那麼 原來arr陣列就被銷燬
  6. 建立一個 Scanner可以接受使用者輸入
  7. 因為使用者什麼時候退出,不確定,用 do-while+break來控制
    四、程式碼實現:
package com.example;

import java.util.Scanner;

public class shuzukuorong {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int[] arr = {1, 2, 3};
        do{
        //新建陣列
        int[] newarr = new int[arr.length + 1];
        //存入資料
        for (int i = 0; i < arr.length; i++) {
            newarr[i] = arr[i];
        }
        System.out.print("請輸入要擴容的元素:");
        newarr[arr.length] = sc.nextInt();
        //讓arr指向newarr
        arr = newarr;
        System.out.println("======arr擴容後元素情況=====");
        for (int i = 0; i < arr.length; i++) {
            System.out.print(arr[i] + " ");
        }
        //問使用者是否繼續
        System.out.println("是否繼續新增y/n");
        char y = sc.next().charAt(0);
        if (y == 'n') {
            break;
        }
    }while(true);
        System.out.println("你退出了新增...");
    }
}
在編寫程式碼的過程中,我用到了do-while迴圈,增進了理解;
在一步步的測試中,我逐步按要求完善程式碼,體現了物件導向的程式設計思想。

相關文章