数组扩容
实现动态给数组添加元素效果,实现对数组扩容
- 原始数组使用静态分配 arr {1, 2, 3}
- 增加的元素直接放在数组最后 arr {1, 2, 3, 4}
- 用户可以通过如下方法来决定是否要继续添加:添加成功,是否继续?y/n
import java.util.Scanner;
public class ArrayAdd01{
public static void main(String[] args) {
/*实现动态给数组添加元素效果,实现对数组扩容
1. 原始数组使用静态分配 arr {1, 2, 3}
2. 增加的元素直接放在数组最后 arr {1, 2, 3, 4}
3. 用户可以通过如下方法来决定是否要继续添加:添加成功,是否继续?y/n*/
/*1.2.思路:
1. 先创建一个arr,再创建一个arrNew用来存放新数组,arrNew的长度要比arr长1
2. 将arr的数组值全部复制到arrNew中
3. 将添加的元素赋值给arrNew的最后一位中
4. 把arrNew的成果抢过来,arr直接指向arrNew地址即可*/
/*3.思路
因为只有用户输入n后才退出,除此之外都是死循环,
所以可以用do-while或while进行死循环,当用户输入n后break*/
Scanner myScanner = new Scanner(System.in);
int[] arr = {1, 2, 3};
do{
int[] arrNew = new int[arr.length + 1];//比arr长度长1
for (int i = 0; i < arr.length; i++) {//arr最后一位的下标是arr.length - 1
arrNew[i] = arr[i];//把arr的元素全部拷过来
}
System.out.println("请输入您要添加的元素:");
int arrAdd = myScanner.nextInt();
arrNew[arrNew.length - 1] = arrAdd;//把添加的元素赋给arrNew的最后一位
arr = arrNew;//把arrNew的地址赋给arr
for (int i = 0; i < arr.length; i++) {//打印arr
System.out.print(arr[i] + "\t");
}
System.out.println("添加成功,是否继续?y/n");
char reply = myScanner.next().charAt(0);
if (reply == 'n') {
break;
}
}while(true);
-
练习
有一个数组{1, 2, 3, 4, 5},可以将该数组进行缩减,提示用户是否继续缩减,每次缩减最后那个元素。当只剩下最后一个元素时,提示:不能再缩减
import java.util.Scanner;
public class ArrayReduce01{
public static void main(String[] args) {
/*有一个数组{1, 2, 3, 4, 5},可以将该数组进行缩减,提示用户是否继续缩减,
每次缩减最后那个元素。当只剩下最后一个元素时,提示:不能再缩减*/
Scanner myScanner = new Scanner(System.in);
int[] arr = {1, 2, 3, 4, 5};
do{
System.out.println("是否进行缩减?y/n");
char reply = myScanner.next().charAt(0);
if (reply == 'n') {
break;
}
int[] arrNew = new int[arr.length - 1];
for (int i = 0; i < arrNew.length; i++) {
arrNew[i] = arr[i];
}
arr = arrNew;
for (int i = 0; i < arr.length; i++) {
System.out.print(arr[i] + "\t");
}
System.out.println();
}while(true);
}
}