数组的添加与缩减
概念:
实现动态的给数组添加元素,实现对数组的扩容。
-
原始数组使用静态分配 int[] arr = {1,2,3};
-
增加的元素,直接放在数组的最后面 arr = {1,2,3,4};
arrNew = {1,2,3,4};
-
用户可以通过如下方法来决定是否继续添加,添加成功,是否继续?y/n
课后练习题:
有一个数组{1,2,3,4,5},可以将该数组进行缩减,提示用户是否继续缩减,每次缩减最后那个元素。当只剩下最后一个元素,提示,不能再缩减。
int arr[] = {1,2,3}; Scanner scanner = new Scanner(System.in); int arr2[] = new int[arr.length + 1]; System.out.println("请输入增加的元素"); arr2[arr2.length - 1] = scanner.nextInt(); for (int i = 0; i < arr.length; i++) { arr2[i] = arr[i]; } arr = arr2; //arr地址改变为arr2 原地址失效(成为垃圾销毁)
改进后:
Scanner scanner = new Scanner(System.in); int arr1[] = {1,2,3}; do{ int arr2[] = new int[arr1.length + 1]; for(int i = 0;i < arr1.length;i++){ arr2[i] = arr1[i]; } System.out.println("输入新的元素"); arr2[arr2.length - 1] = scanner.nextInt(); arr1 = arr2; System.out.println("添加成功!是否还要继续? y/n"); char c = scanner.next().charAt(0); if (c == 'n'){ break; } }while(true); for(int i = 0;i < arr1.length;i++){ System.out.println(arr1[i]); }
//缩减 package Array; import java.util.Scanner; public class arrayReduceDemo01 { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); int arr1[] = {1,2,3,4}; do{ System.out.println("进行元素缩减"); int arr2[] = new int[arr1.length - 1]; for(int i = 0;i < arr2.length;i++){ arr2[i] = arr1[i]; } arr1 = arr2; System.out.println("=========缩减后=========="); for(int i = 0;i < arr1.length;i++){ System.out.println(arr1[i]); } System.out.println("下一次缩减最后一位"+arr1[arr1.length-1]+"是否继续缩减 y/n"); char c = scanner.next().charAt(0); if(c == 'n'){ break; } if (arr1.length - 1 == 1){ System.out.println("这次缩减后是最后一位了,你不能再缩减了!!!"); break; } }while(true); scanner.close(); } }
注意事项:
本章要熟练用会数组的地址 比如代码中:arr1 = arr2; 就可以指向 把上文原arr1直接改变为循环体中的arr2;避免重复变量的使用。