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");
}
运行之后的结果是:
如果要是删除数组中的一个数据的话,思路与插入类似,只不过后移变成前移,也就是把需要删除数据之后的数据都前移一个位置: