数组扩容
1. 要求与分析
要求:实现动态的给数组添加元素效果,实现对数组扩容。
1.原始数组使用静态分配 int[] array1 = {1,2,3,4,5,6}
2.增加的元素 7,直接放在数组的最后 array1 = {1,2,3,4,5,6}
3.用户可以通过如下方法来决定是否继续添加,添加成功,是否继续?y/n
思路分析:
1. 定义初始数组 int[] array1 = {1,2,3,4,5,6}//下标 0-5
2. 定义一个新的数组 int[] array2 = new int[array1.length+1];
3. 遍历 array1 数组,依次将 array1 的元素拷贝到 array2 数组
4. 将 7 赋给 array2[array2.length - 1] = 7;把 7 赋给 array2 最后一个元素
5. 让 array1 指向 array2 ; array1 = array2; 那么 原来 array1 数组就被销毁
6. 创建一个 Scanner 可以接受用户输入
7. 因为用户什么时候退出,不确定
2. 代码实现
public static void main(String[] args) {
Scanner myScanner = new Scanner(System.in);
//初始化数组
int[] array1 = {1, 2, 3, 4, 5, 6};
do {
int[] array2 = new int[array1.length + 1];
//遍历 array1 数组,依次将 array1 的元素拷贝到 array2 数组
for (int i = 0; i < array1.length; i++) {
array2[i] = array1[i];
}
System.out.println("请输入你要添加的元素");
int addNum = myScanner.nextInt();
//把 addNum 赋给 array2 最后一个元素
array2[array2.length - 1] = addNum;
//让 array1 指向 array2,
array1 = array2;
for (int i = 0; i < array1.length; i++) {
System.out.print(array1[i] + "\t");
}
//问用户是否继续
System.out.println("是否继续添加 y/n");
char key = myScanner.next().charAt(0);
if (key == 'n') {
//如果输入 n ,就结束
break;
}
} while (true);
System.out.println("你退出了添加...");
}
输出: