要求:实现动态的给数组添加新的元素,为数组扩容
1)原始数组用静态分配 int [ ] arr = {1, 2, 3}
2)为数组最后添加一个元素n,使arr = {1, 2, 3, n}
3)用户可以自己选择是否继续添加
思路:
1)创建原始数组arr,要扩容不能直接在arr的基础上添加一个新下标,这样会直接数组越界,报错了
2)我们可以新建一个arrNew数组,arrNew的数组长度在arr的长度上+1
3)遍历arr数组把arr数组内容拷贝到arrNew中,再用Scanner接收到用户输入的元素添加到arrNew的最后一个元素上
4)因为我们要扩容的是arr数组,所以最后要把arr数组的地址指向arrNew的地址
思路分析完了,下面是代码:
import java.util.Scanner;
public class ArrayAdd02{
public static void main(String[] args){
//创建一个新的Scanner对象
Scanner myS = new Scanner(System.in);
int[] arr = {1, 2, 3};//初始数组
do{
//创建一个新的扩容数组
int[] arrNew = new int[arr.length + 1];
for(int i = 0; i < arr.length; i++){
arrNew[i] = arr[i];
}
System.out.println("请输入你要添加的元素:");
arrNew[arrNew.length - 1] = myS.nextInt();
arr = arrNew;//让arr指向arrNew,使arr和arrNew的数组
// 地址相同
System.out.println("===添加后的数组为:===");
for(int i = 0; i < arr.length; i++){
System.out.print(arr[i] + " ");
}
System.out.println();
System.out.println("是否要继续添加数组? y/n");
//用key接受用户输入的字符
char key = myS.next().charAt(0);
if(key == 'n'){//如果输入n则直接break退出
break;
}
}while(true);
System.out.println("你退出了添加...");
}
}