实现数组内元素的增减(有注释,利用数组地址拷贝的性质)

这是一个Java程序,演示如何利用数组地址拷贝的性质来动态地增加和减少数组中的元素。用户可以输入新元素添加到数组,或者选择缩减数组。程序提供了一个简单的交互式界面,允许用户在操作后选择是否继续。
摘要由CSDN通过智能技术生成

import java.util.Scanner;
public class ArrayAdd_Reduce{
    public static void main (String[] args){
        /*
        实现对数组内元素的动态添加与减少!此处元素均使用整型
         */
        //实现数组扩容
        Scanner myScanner1 = new Scanner(System.in);//创建一个scanner接收
        int[] arr1 = {1,2};//静态定义一个合适的数组
        char key1;//声明一个字符类型的变量,为后面可以退出添加或操作做准备
        //涉及到需要输入什么而退出循环,我首选do~while
        System.out.println("数组扩容操作开始!");
        System.out.print("目前的数组情况为: ");
        for(int i = 0; i < arr1.length; i++){
            System.out.print(arr1[i] + " ");
        }
        do{
            int[] arrNew = new int[arr1.length + 1];
            for(int i = 0; i < arr1.length; i++){
                arrNew[i] = arr1[i];//把arr1的地址拷贝给arrNew,不过最后一个元素位置是空的
            }
            System.out.println("\n" + "请输入您想添加的元素: ");
            int add_num = myScanner1.nextInt();
            arrNew[arrNew.length - 1] = add_num;
            arr1 = arrNew; //让arr1于arrNew都访问同一个地址
            System.out.print("添加后的数组情况为: ");
            for(int i = 0; i < arr1.length; i++){
                System.out.print(arr1[i] + " ");
            }
            System.out.println("\n" + "是否继续添加? 输入n退出,其他任意键继续!");
            key1 = myScanner1.next().charAt(0);
            if(key1 == 'n'){
                break;//break,默认退出最近的循环,此处为do~while
            }
        }while(true);
        System.out.println("数组扩容操作结束!");
        //实现数组缩减
        System.out.println("数组缩减操作开始!");
        Scanner myScanner2 = new Scanner(System.in);
        int[] arr2 = {1,2,3};//静态定义一个数组
        char key2;//声明一个后面会用到退出循环的变量,主动退出
        int time = arr2.length;//定义一个强制退出的变量
        System.out.print("现有数组情况为: ");//先打印出现有数组内的元素情况
        for(int i = 0; i < arr2.length; i++){
            System.out.print(arr2[i] + " ");
        }
        do{
            System.out.println("\n" + "是否缩减? 输入n退出,其他任意键继续!");
            key2 = myScanner1.next().charAt(0);
            if(key2 == 'n'){
                break;//break,默认退出最近的循环,此处为do~while
            }
            int[] arrNew2 = new int[arr2.length - 1];//新的数组比原来的数组少存一个元素就能缩减了
            for(int i = 0; i < arrNew2.length; i++){
                arrNew2[i] = arr2[i];//从头把arr2中的元素拷贝到新的数组
            }
            arr2 = arrNew2;//使arr2也访问新得到数组内容
            time--;//执行一次缩减time就减1
            System.out.print("缩减后数组的情况为: ");
            for(int i = 0; i < arr2.length; i++){
                System.out.print(arr2[i] + " ");
            }
            if(time == 1){//t当前数组内元素个数为1执行该判断
                System.out.println("当前数组内元素剩余一个无法再缩减,结束缩减操作!");
                return;
            }
        }while(true);
        System.out.println("数组缩减操作结束!");
    }
}
/*
此代码运行环境: 写于Sublinme Text3,由Dos系统编译
注: 本人实现数组的增减的思路目前比较简单,仅是通过数组地址拷贝的性质,且增减功能都是自后向前,有待改进。
 */

 主动结束操作

 因数组内元素只剩下一个而强制退出

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值