import java.util.Scanner;
public class ArrayAdd01{
public static void main (String[] args){
/*
实现添加元素到数组,且有小到大,可手动结束
*/
Scanner myScanner = new Scanner(System.in);
int[] arr = {90,43,55,31,12,22};//静态定义一个int型数组
for(int j = arr.length; j >= 1 ; j--){//排序次数会逐渐减少,减少不必要的判断
for(int i = 1; i < arr.length; i++){//实现大的元素往后,小的元素提前
if(arr[i- 1] > arr[i]){
int temp = arr[i - 1];
arr[i - 1] = arr[i];
arr[i] = temp;
}
}
}
System.out.println("添加前的数组情况为:");
for(int i = 0; i < arr.length; i++){
System.out.print(arr[i] + " ");
}
char key = 'y';//key作为退出循环的关键
int time = 1;//添加的元素个数
while(key != 'n'){
System.out.println("\n" + "请输入你想添加的元素: ");
int add_num = myScanner.nextInt();
int index = 0;
for(int i = 0; i < arr.length; i++){
if(add_num <= arr[i]){//当添加的数小于或等于与之比较的元素时,添加的数就可以放在与之比较的数前面
index = i;
break;//找到位置即可退出
}else{
index = arr.length;//当添加的数大于数组内所有元素时执行该分支
}
}
//System.out.println(index);检查下标
int[] arrNew = new int[arr.length + time];//每次添加下一个新数组长度就+time
for(int i = 0, j = 0; i < arrNew.length; i++) {
if(i != index){
arrNew[i] = arr[j];
j++;//没到添加的数的下标,那就依次把旧数组所有元素遍历到新数组内
}else{
arrNew[index] = add_num;//到添加的数时,要添加的数添加到对应小标的元素即可
//注,此时j没有++,表示遍历旧数组时仍然是前一个,但是i++了,新数组接收就是下一个元素
}
}
arr = arrNew; //地址拷贝
System.out.println("添加后的数组情况为:");
for(int i = 0; i < arr.length; i++){
System.out.print(arr[i] + " ");
}
System.out.println("\n" + "是否继续添加? 输入n结束,其它任意键继续!");
key = myScanner.next().charAt(0);
}
}
}
/*
此代码运行环境: 写于Sublinme Text3,由Dos系统编译
注:暂时还没学会数组元素删减
*/
理解到一维数组内元素增加(学习打卡)
于 2022-03-29 18:12:57 首次发布