Java中数组难点,插入新数据/删除数据

1.往数组中插入一个新数据
        我们知道,数据相当于一个容器,是用来存储一组相同数据类型的数据的,并且存储的数据是井然有序的,有自己的位置,方便取出。那我们就能知道,如果要是往数组里面插入一个新的数据,则需要先确定新插入的内容的位置,接着就需要把当前位置之后的数据都后移一位(为了给新插入的数据腾位置),这样就空出了一个位置,然后再把新数据放在这个空出的位置上。
        类比生活中的一个小例子,就比如排队买东西,越靠前的人就能越快买东西,是按着顺序一个一个来的。现在呢,来了一个vip,要让他第一个买东西,那是不是就得需要之前排队的那些人都得往后挪一个位置,然后腾出第一的位置给这个vip。插队这个行为不太好😅哈,但感觉这个例子原理挺符合我们数组插入新数据。
        不管敲什么代码,都得现把思路屡清楚。分三步走:确定新数据的位置→→这个位置之后的数据后移→→把新元素放上去

代码如下:

int list[]=new int[6];//声明一个整型的数组,并让其长度为6
		list[0]=99;
		list[1]=85;
		list[2]=82;
		list[3]=63;
		list[4]=60;
		System.out.println("插入前的成绩是:");
		for(int m=0;m<list.length;m++){
			System.out.print(list[m]+"\t");
			if(m==list.length-1){
				System.out.println("");
			}
		}
		int index=list.length;//保存新增数据的插入位置,先默认为最后一个位置,即五
		Scanner input=new Scanner(System.in);
		System.out.print("请输入新增成绩:");
		int num=input.nextInt();//从控制台接收一下新增的数组
		/*
		 * 将数组的数据逐个的与新增的数据进行比较,利用for循环比较,找到新插入数据在数组中的位置
		 */
		for(int i=0;i<list.length;i++){
			if(num>list[i]){//比较数据的大小
				index=i;//交换数据的位置,即下标。重新给index赋值
				//list[index]=num;//(erro,不能在这里直接把num的值赋给index的位置,因为上一步已经给index申请一个
				//位置了,并且这个位置还有值,也就是i位置的值,也就是说现在在index位置上的数据就是i的值,如果要是再重新给
				//index赋值,就会把index原先的值去掉,那i的值也就去掉了。)
				break;
			}
		}//for结束
		/*
		 * 元素后移
		 */
		for(int j=list.length-1;j>index;j--){
			list[j]=list[j-1];//index下标开始的元素后移一个位置(把后面的下标赋值给前面的)
		}
		list[index]=num;//插入新的数据
		System.out.println("插入成绩的下标是:"+index);
		System.out.println("插入后的成绩是:");
		for(int k=0;k<list.length;k++){
			System.out.print(list[k]+"\t");
		}

运行之后的结果是:
在这里插入图片描述
如果要是删除数组中的一个数据的话,思路与插入类似,只不过后移变成前移,也就是把需要删除数据之后的数据都前移一个位置:

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

梦梦~~

你的鼓励是对我最大的动力

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

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

打赏作者

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

抵扣说明:

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

余额充值