数组扩容

1. 要求与分析

  要求:实现动态的给数组添加元素效果,实现对数组扩容。
  1.原始数组使用静态分配 int[] array1 = {1,2,3,4,5,6}
  2.增加的元素 7,直接放在数组的最后 array1 = {1,2,3,4,5,6}
  3.用户可以通过如下方法来决定是否继续添加,添加成功,是否继续?y/n
  思路分析:
  1. 定义初始数组 int[] array1 = {1,2,3,4,5,6}//下标 0-5
  2. 定义一个新的数组 int[] array2 = new int[array1.length+1];
  3. 遍历 array1 数组,依次将 array1 的元素拷贝到 array2 数组
  4. 将 7 赋给 array2[array2.length - 1] = 7;把 7 赋给 array2 最后一个元素
  5. 让 array1 指向 array2 ; array1 = array2; 那么 原来 array1 数组就被销毁
  6. 创建一个 Scanner 可以接受用户输入
  7. 因为用户什么时候退出,不确定

2. 代码实现

    public static void main(String[] args) {
        Scanner myScanner = new Scanner(System.in);
        //初始化数组
        int[] array1 = {1, 2, 3, 4, 5, 6};
        do {
            int[] array2 = new int[array1.length + 1];
            //遍历 array1 数组,依次将 array1 的元素拷贝到 array2 数组
            for (int i = 0; i < array1.length; i++) {
                array2[i] = array1[i];
            }
            System.out.println("请输入你要添加的元素");
            int addNum = myScanner.nextInt();
            //把 addNum 赋给 array2 最后一个元素
            array2[array2.length - 1] = addNum;
            //让 array1 指向 array2,
            array1 = array2;
            for (int i = 0; i < array1.length; i++) {
                System.out.print(array1[i] + "\t");
            }
            //问用户是否继续
            System.out.println("是否继续添加 y/n");
            char key = myScanner.next().charAt(0);
            if (key == 'n') {
                //如果输入 n ,就结束
                break;
            }
        } while (true);

        System.out.println("你退出了添加...");
    }

输出:

image

posted @   ___sunsets  阅读(43)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
点击右上角即可分享
微信分享提示