理解到一维数组内元素增加(学习打卡)

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系统编译
注:暂时还没学会数组元素删减
 */

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值