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