/* package FirstJava; public class TestList { //跨函数访问 //通过不同的函数进行数组进行访问,需定义在类中 static int [] nums = new int [5]; //如何判断0是否真假,并且跨函数访问 static int index = 4; //代表的有效元素的个数,同时也代表着下一个要插入的元素下标 public static void main(String[] args) { nums[0] = 11; nums[1] = 22; nums[2] = 33; nums[3] = 0; print(); insert(55); print(); } public static void insert(int value) { //向数组中插入一个新元素,数组的遍历,查找值为0的元素,将value赋值给该元素 nums[index] = value; index++; //有效个数变成5了 } //遍历nums数组 public static void print() { for(int i = 0 ; i < index ; i++) { System.out.print(nums[i]+"\t"); } System.out.println(); } } */ //一定要理解index的作用 //有效元素的个数要理解 //也就说要选择插入的位置 /* * 保证原数据不丢失 * 那就涉及到了元素的移动 * */ //那就得移动最后一个有效元素 package FirstJava; import java.util.Arrays; public class TestList { //跨函数访问 //通过不同的函数进行数组进行访问,需定义在类中 static int[] nums = new int[5]; //如何判断0是否真假,并且跨函数访问 static int index = 0; //代表的有效元素的个数,同时也代表着下一个要插入的元素下标 public static void main(String[] args) { insert(0,11); insert(1,22); insert(2,33); insert(3,44); insert(4,55); print(); //数组长度不够了 //进行扩容 } //数组的扩容 public static void expand() { int [] newArrays = Arrays.copyOf(nums,nums.length * 2); } //向数组中插入一个新元素 //插入不代表覆盖 public static void insert(int position , int value) { //保护程序 //应该全部经过insert()函数检查 if(position < 0 || position > index) { System.out.println("您好,用户,您输入的位置有误,请输入0-"+index+"之间的数字"); return; } if(nums.length == index ) { //获得新数组,带有原值 //地址的替换 //数组作为引用类型之一,其变量中存储的是数组的地址 //数组原则上代表一段连续的空间 //一个局部变量只能存一个值 expand(); } //将原数据依次向右移动 for (int i = index ; i > position ; i--) { nums[i] = nums[i - 1]; } //用极限的思想思考会简单一点 //取边界 //新值存入目标位置 nums[position] = value; //最终有效元素的个数 index++; } //遍历nums数组 public static void print() { for (int i = 0; i < index; i++) { System.out.print(nums[i] + "\t"); } System.out.println(); } }
Java数组中的插入问题
最新推荐文章于 2024-05-28 07:00:00 发布