要求:实现动态的给数组添加元素效果,给数组扩容
原始数组使用静态分配int[] arr = {1,2,3};
增加数组元素4,直接放在arr的最后 = {1,2,3,4}
用户可以通过如下方法继续添加,y/n y继续添加否则反之。
文字描述
/*原数组: int[] arr = {1,2,3};
* 定义一个新的数组 int[] arrNew = new int[arr.length + 1];
* 把arr的元素赋给arrNew,再把4赋给arrNew[arrNew.length - 1];
* 再把arrNew赋给arr(引用传递)
* 创建一个Scanner对象接收用户输入
* 因为不确定用户什么时候退出用do-while + break;来控制
*/
流程图如下
代码展示
int[] arr = {1,2,3};
int[] arrNew = new int[arr.length + 1];
for(int i = 0; i < arr.length; i++){
arrNew[i] = arr[i];
}
arrNew[arrNew.length - 1] = 4;
arr = arrNew;
System.out.println("======arr的数组元素如下==");
for(int i = 0; i < arr.length; i++){
System.out.print(arr[i] + "\tz");
}
代码结果:
优化代码
在原有代码基础上,用do-while循环包裹(原数组要不在do-while循环里面),从键盘输入要添加的元素,把固定的4替换为从键盘输入要添加的元素,do-while的判断条件为true,一直循环这样可以保证每次最少可以添加一个元素,询问是否要继续添加 ,从键盘输入y或n,y或n,用if判断==n,为真退出循环,为假继续循环。
代码优化如下
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("请输入要补充的元素:");
int add = myScanner.nextInt();
arrNew[arrNew.length - 1] = add;
arr = arrNew;
System.out.println("======arr的数组元素如下==");
for(int i = 0; i < arr.length; i++){
System.out.print(arr[i] + "\t");
} System.out.println("是否要继续添加元素 y/n");
char arrnum = myScanner.next().charAt(0);
if(arrnum == 'n'){
break;
}
}while(true);
System.out.println("你退出了添加...");