美文网首页
java数组的自增

java数组的自增

作者: 山坡上的斐德洛 | 来源:发表于2018-12-02 21:10 被阅读0次

数组的自增

  1. 数组的增长是元素个数的增长,元数据不能破坏
  2. 自增是当数组添加元素的时候自动调用
import java.util.Scanner;

public class 数组的自增 {
    public static void main(String[]args){
        Scanner sc = new Scanner(System.in);

        // 静态数组
        int [] staticArray = {1, 2, 3, 4, 5, 6, 0};

        System.out.println("请输入你要插入的数字:");
        int item = sc.nextInt();

        // 添加数据
        staticArray = addItemToArray(staticArray, item);
        staticArray = addItemToArray(staticArray, item);
        // 输出数组
        printIntArray(staticArray);


    }


    /*
    * 完成数组元素个数扩张的操作
    * @param array 要自增的数组
    * */
    public static int[] grow(int[] array){
        // 1. 参数合法性判断
        if(null == array || array.length == 0){
            System.out.println("参数错误");
            return null;
        }

        // 2. 获取原数组元素个数
        int oldCapacity = array.length;

        // 3. 通过原数组元素计算新的元素个数, 大约相对于原本个数的1.5倍
        int newCapacity = oldCapacity + oldCapacity/ 2;//
        // 4. 创建新的数组
        int[] newArray = new int[newCapacity];

        // 5. 拷贝数据
        for(int i = 0; i < oldCapacity; i++){
            newArray[i] = array[i];
        }

        // 6. 地址交换
        return newArray;
    }


    /*
    * 向数组中加入数据 该数组是从大到小排列的 0代表无效数据 插入数据不能打乱数据顺序
    * @param array 要加入数据的数组
    * @param item 要加入的数据
    * */
    public static int[] addItemToArray(int[]array, int item){
        // 1. 参数合法性判断
        if(null == array || array.length == 0 || item == 0){
            System.out.println("传入的参数不合法");
            return null;
        }

        // 如果数组最后一位元素的值不是0,调用grow,完成数组的扩容
        if(array[array.length-1] != 0){
            array = grow(array);
        }

        // 首先找到item应该翻入数组当中的未知,找到第一个比item大的数据
        int index = 0;
        for(int i = 0; i < array.length; i++){
            if(item < array[i]){
                // 说明找到了第一个比item大的数据
                index = i;
                break;
            }
            else if(array[i] != 0){
                index = i+1;
            }
        }

        // 数组里面的元素按照插入的条件部分向右移动
        for(int i = array.length -1; i > index; i--){
            array[i] = array[i-1];
        }
        // 将item赋值给第一个大于item的数
        array[index] = item;
        return array;
    }

    /*
    * 输出数组的元素
    * */
    public static void printIntArray(int []array){
        for(int i = 0; i< array.length; i++){
            System.out.print(array[i]+ "   ");
        }
        System.out.println("\n");
    }
}

相关文章

网友评论

      本文标题:java数组的自增

      本文链接:https://www.haomeiwen.com/subject/fsdscqtx.html