数组添加/扩容和数组缩减
數(shù)組添加/擴容
需求:實現(xiàn)動態(tài)的給數(shù)組添加元素效果,實現(xiàn)對數(shù)組擴容。ArrayAdd.java
1) 原始數(shù)組使用靜態(tài)分配 int[] arr = {1,2,3}
2) 增加的元素 4,直接放在數(shù)組的最后 arr = {1,2,3,4}
3)用戶可以通過如下方法來決定是否繼續(xù)添加,添加成功,是否繼續(xù)?y/n
思路分析:1.定義初始數(shù)組 int[] arr = {1,2,3}//下標 0-2
2. 定義一個新的數(shù)組 int[] arr1 = new int[arr.length+1];
3. 遍歷 arr 數(shù)組,依次將 arr 的元素拷貝到 arr1 數(shù)組
4. 將 4 賦給 arr1[arr.length] = 4;把 4 賦給 arr1 最后一個元素
5. 讓 arr 指向 arr1 ; arr = arr1; 那么 原來 arr 數(shù)組就被銷毀
6. 創(chuàng)建一個 Scanner 可以接受用戶輸入
7. 因為用戶什么時候退出,不確定,使用 do-while + break 來控制
- 代碼 package com.itheima.day2;import java.util.Scanner;//需求:給數(shù)組int[] arr = {1, 2, 3}添加一個元素4,得到int[] arr = {1, 2, 3,4},
// 用戶是否繼續(xù)添加,添加成功,是否繼續(xù)?y/n
public class test6 {public static void main(String[] args) {Scanner sc = new Scanner(System.in);do {int[] arr = {1, 2, 3};int[] arr1 = new int[arr.length + 1];//創(chuàng)建一個新數(shù)組for (int i = 0; i < arr.length; i++) {arr1[i] = arr[i];//將arr數(shù)組拷貝給數(shù)組arr1}System.out.println("請輸入你要添加的元素:");arr1[arr.length] = sc.nextInt();//給arr1數(shù)組添加元素值為4arr = arr1;//將添加元素后的arr1數(shù)組拷貝回給arr數(shù)組System.out.println("-----元素擴容后的情況------");for (int i = 0; i < arr.length; i++) {System.out.print(arr[i] + "\t");//對arr數(shù)組進行遍歷輸出}System.out.println();System.out.println("是否要繼續(xù)添加?y/n");char key = sc.next().charAt(0);if (key == 'n') {System.out.println("++++你退出了添加++++");break;}} while (true);}
}
執(zhí)行結(jié)果:
?
數(shù)組縮減
需求:有一個數(shù)組 {1, 2, 3, 4, 5}, 可以將該數(shù)組進行縮減,提示用戶是否繼續(xù)縮減,每次縮減最后那個元素。當只剩下最后一個元素,提示,不能再縮減。
思路分析:數(shù)組添加(擴容)的逆向思維
- 代碼 package com.itheima.day2;import java.util.Scanner;// 需求:有一個數(shù)組 {1, 2, 3, 4, 5}, 可以將該數(shù)組進行縮減,提示用戶是否繼續(xù)縮減, // 每次縮減最后那個元素。當只剩下最后一個元素,提示,不能再縮減。 public class test7 {public static void main(String[] args) {int[] arr = {1, 2, 3, 4, 5};Scanner sc = new Scanner(System.in); //掃描器(導包)do { // //定義一個數(shù)組長度為arr1.length-1的數(shù)組去接收縮減后剩下要存儲的元素int[] arr1 = new int[arr.length - 1];//縮減 => 每次少遍歷一個元素for (int i = 0; i < arr.length - 1; i++) {arr1[i] = arr[i];}arr = arr1;//將arr1重新賦回給arrSystem.out.println("-----元素縮減后的情況-----");for (int i = 0; i < arr.length; i++) {System.out.print(arr[i] + "\t");// 不換行輸出并且之間有間隔}System.out.println(); //換行System.out.println("是否繼續(xù)縮減?y/n");System.out.println("————————————————————————————————————");char key = sc.next().charAt(0); //接收if (key == 'y') { //是否繼續(xù)縮減//如果繼續(xù)縮減,判斷數(shù)組長度是否等于1,是————>停止縮減,退出程序if (arr.length < 2) {System.out.println("數(shù)組長度等于1,不能再縮減!");break;}} else {System.out.println("不再繼續(xù)縮減!");break;}} while (true);} } 執(zhí)行結(jié)果·:
?
?
總結(jié)
以上是生活随笔為你收集整理的数组添加/扩容和数组缩减的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Java基础(数组)数组缩减
- 下一篇: VFIO代码分析(3)VFIO-PCI驱