在学习java基础时 ,大家都知道数组的长度是不可变的,那我们怎么在实际运用中向其中插入一个 元素呢
题目是这样的:
有一组学员的成绩{99,85,82,63, 60},已经是按降序排列。要增加一个学员的成绩,将它插入成绩序列,并保持降序
我的分析思路是这样的,首先数组的长度不可变,那我们就在定义一个数组,将原有的复制过去,在原有的基础上在进行插入,我们可以先确定插入的数字应该在新数组的第几个索引,当比他小的数字就可以往后去挪一个索引,那么如何去挪呢,这里有一张图,可以参考一下
直到小于我们输入的为止,就不需要在挪了,最后将我们的键盘输入的值放到他对应的索引上
代码如下
public static void main(String[] args) {
//键盘输入一个数字
Scanner sc = new Scanner(System.in);
//声明一个原始的数组
int[] score={99,85,82,63, 60};
//创建一个数组比原始数组多一位
int [] newscore=new int[score.length+1];
//将原始数组中的数值遍历放进新数组中
for (int i = 0; i < newscore.length-1; i++) {
newscore[i]=score[i];
//插入前的数组中的元素
System.out.print(newscore[i]+" ");
}
//定义一个变量来接受键盘输入的数字
System.out.println("请输入你要插入的数字");
int s = sc.nextInt();
//首先找出我们插入的数字应该在数组中的位置,即索引位置,定义一个用来接受索引位置的常量
int index=0;
for (int i = 0; i < newscore.length; i++) {
if (s > newscore[i]) {
index = i;
System.out.println(index);
break;
}
}
//接下来插入该数字,并实现将后面的数字都往后移一个索引位
for (int i =newscore.length-1;i>index;i--){
newscore[i]=newscore[i-1];
}
//将我们键盘输入的数值放进上面得出的索引位,即index
newscore[index]=s;
//遍历可得最终的集合
for (int b:newscore
) {
System.out.println(b);
}
}
}