JAVA 实现数组扩容与缩减

1.首先先写一个简单的扩容

先上代码

import java.util.Scanner;
public class 草稿 {
    public static void main(String[] args){
        Scanner scanner = new Scanner(System.in);//Scanner类
        int array[] = {1, 2, 3};//先定义一个静态数组

        int arrayNew[] = new int[array.length + 1];//先扩大数组空间

        for(int i = 0; i < array.length; i++){//拷贝数值
            arrayNew[i] = array[i];
        }

        System.out.println("输入一个添加的数值");
        int num = scanner.nextInt();
        arrayNew[arrayNew.length - 1] = num;//添加数值

        array = arrayNew;//覆盖数组

        for(int i = 0; i < array.length; i++){
            System.out.print(array[i] + "\t");
        }

    }
}

可以看到,扩容成功了,但是只扩容了一位数

想想如果要实现输入一个true就扩容一次,该怎么做?

2.实现自定义扩容大小 

实现自定义扩容最重要的一点就是使用do-while-break

上代码

import java.util.Scanner;

public class 数组的扩容Importance{
    public static void main(String[] args){
        Scanner scanner = new Scanner(System.in);//Scanner类
        int array[] = {1, 2, 3};//先定义一个静态数组

        Boolean t;
        do {
            int arrayNew[] = new int[array.length + 1];

            for (int i = 0; i < array.length; i++) {//copy
                arrayNew[i] = array[i];
            }

            System.out.println("输入你要添加的数值");
            int num = scanner.nextInt();
            arrayNew[arrayNew.length - 1] = num;//添加的数值

            array = arrayNew;//销毁原来的array数组,将array指向arrayNew所在空间

            System.out.println("数组的值为");
            for (int i = 0; i < array.length; i++) {
                System.out.print(array[i] + "\t");
            }

            System.out.println("");
            System.out.println("已扩容成功,继续扩容请输入true,退出请输入false");

            t = scanner.nextBoolean();
            if(t == false){
                System.out.println("退出程序,最后的值为");
                for(int i = 0; i < array.length; i++){
                    System.out.print(array[i] + "\t");
                }
                break;
            }
        }while (t == true);
    }
}

完美实现,注释已经标注

3.举一反三,实现数组缩减 

上代码!!!!!!!!

import java.util.Scanner;

public class b8数组的缩减{
    public static void main(String[] args){
        Scanner scanner = new Scanner(System.in);

        int array[] = {1, 2, 3, 4, 5};

        boolean t;
        do {
            int arrayNew[] = new int[array.length - 1];
            for(int i = 0; i < arrayNew.length; i++){
                arrayNew[i] = array[i];
            }

            array = arrayNew;

            for(int i = 0; i < array.length; i++){
                System.out.print(array[i] + "\t");
            }

            System.out.println("");

            System.out.println("已成功缩减,继续缩减请输入true,退出请输入false");
            t = scanner.nextBoolean();
            if(t == false){
                System.out.println("退出程序,最后的值为");
                for(int i = 0; i < array.length; i++){
                    System.out.print(array[i] + "\t");
                }

                break;
            }

            if(array.length == 1){
                System.out.println("数组长度已为最小值,无法再缩减,最后的值为");
                for(int i = 0; i < array.length; i++){
                    System.out.print(array[i] + "\t");
                }

                break;
            }

        }while (t == true);
    }
}

 

有问题欢迎评论区问,一起学习!
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

压马路的时间

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

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

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

打赏作者

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

抵扣说明:

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

余额充值