数组添加/扩容和数组缩减

数组添加/扩容

需求:实现动态的给数组添加元素效果,实现对数组扩容。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[] arr1 = new int[arr.length+1];
3. 遍历 arr 数组,依次将 arr 的元素拷贝到 arr1 数组
4. 将 4 赋给 arr1[arr.length] = 4;把 4 赋给 arr1 最后一个元素
5. 让 arr 指向 arr1 ; arr = arr1; 那么 原来 arr 数组就被销毁
6. 创建一个 Scanner 可以接受用户输入
7. 因为用户什么时候退出,不确定,使用 do-while + break 来控制

  • 代码
    package com.itheima.day2;
    
    import java.util.Scanner;
    
    //需求:给数组int[] arr = {1, 2, 3}添加一个元素4,得到int[] arr = {1, 2, 3,4},
    // 用户是否继续添加,添加成功,是否继续?y/n
    public class test6 {
        public static void main(String[] args) {
            Scanner sc = new Scanner(System.in);
            do {
                int[] arr = {1, 2, 3};
                int[] arr1 = new int[arr.length + 1];//创建一个新数组
                for (int i = 0; i < arr.length; i++) {
                    arr1[i] = arr[i];//将arr数组拷贝给数组arr1
                }
                System.out.println("请输入你要添加的元素:");
                arr1[arr.length] = sc.nextInt();//给arr1数组添加元素值为4
                arr = arr1;//将添加元素后的arr1数组拷贝回给arr数组
                System.out.println("-----元素扩容后的情况------");
                for (int i = 0; i < arr.length; i++) {
                    System.out.print(arr[i] + "\t");//对arr数组进行遍历输出
                }
                System.out.println();
                System.out.println("是否要继续添加?y/n");
                char key = sc.next().charAt(0);
                if (key == 'n') {
                    System.out.println("++++你退出了添加++++");
                    break;
                }
            } while (true);
        }
    }
    

    执行结果:watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA5oyW5o6Y5py66L2sSkFWQeW8gOWPkQ==,size_20,color_FFFFFF,t_70,g_se,x_16

 

数组缩减

需求:有一个数组 {1, 2, 3, 4, 5}, 可以将该数组进行缩减,提示用户是否继续缩减,每次缩减最后那个元素。当只剩下最后一个元素,提示,不能再缩减。

思路分析:数组添加(扩容)的逆向思维

  • 代码
    package com.itheima.day2;
    
    import java.util.Scanner;
    
    //       需求:有一个数组 {1, 2, 3, 4, 5}, 可以将该数组进行缩减,提示用户是否继续缩减,
    //       每次缩减最后那个元素。当只剩下最后一个元素,提示,不能再缩减。
    public class test7 {
        public static void main(String[] args) {
            int[] arr = {1, 2, 3, 4, 5};
            Scanner sc = new Scanner(System.in); //扫描器(导包)
            do {
    //           //定义一个数组长度为arr1.length-1的数组去接收缩减后剩下要存储的元素
                int[] arr1 = new int[arr.length - 1];
                //缩减 => 每次少遍历一个元素
                for (int i = 0; i < arr.length - 1; i++) {
                    arr1[i] = arr[i];
                }
                arr = arr1;//将arr1重新赋回给arr
                System.out.println("-----元素缩减后的情况-----");
                for (int i = 0; i < arr.length; i++) {
                    System.out.print(arr[i] + "\t");// 不换行输出并且之间有间隔
                }
                System.out.println(); //换行
                System.out.println("是否继续缩减?y/n");
                System.out.println("————————————————————————————————————");
                char key = sc.next().charAt(0);  //接收
                if (key == 'y') { //是否继续缩减
                    //如果继续缩减,判断数组长度是否等于1,是————>停止缩减,退出程序
                    if (arr.length < 2) {
                        System.out.println("数组长度等于1,不能再缩减!");
                        break;
                    }
                } else {
                    System.out.println("不再继续缩减!");
                    break;
                }
            } while (true);
        }
    }
    执行结果·:watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA5oyW5o6Y5py66L2sSkFWQeW8gOWPkQ==,size_20,color_FFFFFF,t_70,g_se,x_16

 

 

  • 5
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ZH_1913

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值