import java.util.Scanner;
//在已知降序的数组正确位置插入一个特定数字
public class InsertNum {
public static void main(String[] args) {
//通过数组list存储原来的5个成绩
//数组长度是固定的,一旦定义就无法修改
//int[] list={12,34,65,76,65};X,不能定义
//给数组定义长度
int[] list=new int[6];
//给数组前五位赋值
list[0]=121;
list[1]=34;
list[2]=232;
list[3]=242;
list[4]=45;
//获取用户插入的数值
//获取输入数值并在屏幕上显示,创建scanner对象
Scanner input=new Scanner(System.in);
//输出提示用户插入数值
System.out.println("请输入要插入的值:");
//获取键盘输入值,int类型,赋值给num
int num=input.nextInt();
//第一步,找到num要插入的位置index:找到num比数组中元素(第一个)大的位置
//初始化index为0
//int index=0;X //当用户插入一个比原数组所有数都小的数值时,此声明初始化方法行不通
//将indexc初始化为list数组的最后一个位置
int index=list.length-1;
//用循环在数组list中进行逐个比较
for (int i=0;i<list.length;i++){
//判断num是否大于数组中某个位置的值
if (num>list[i]){
//结果为true,num值大,把数组位置赋值给index
index=i;
//调出循环
break;
}
}
//第二步,原index位置及以后的所有数据整体往后移,不能覆盖,应该逐个给数组位置为空的进行赋值
//先给i赋值数组倒数第二的位置值,然后用循环进行比较i和index的大小,i值逐渐前移
for (int i=list.length-1;i>index;i--){
//把数组前一个位置的值赋值给后一个位置
list[i]=list[i-1];//list.length-1:5 list[5]=list[4]; “=”赋值号永远先执行右边
}
//第三步,在index位置将num插入数组
//将num赋值给list数组index位置
list[index]=num;
//输出提示num值赋值到数组list的index位置
System.out.println("插入数值的下标是:"+num);
//输出提示插入数组后数组所有数值的排序提示
System.out.println("显示数组中所有的数值:");
//num赋值数组list后用for循环对数组进行遍历,显示所有的数值
for (int listNum:list){
//输出数组list内每个数值
System.out.print(listNum+"\t");//print不换行输出,“\t”空一格
}
System.out.println();
}
}