= = = = 数组的扩容与缩减= = = =
一、扩容基本思想
1、定义一个新数组,其类型与原来数组一致
2、新数组的容量比原数组 大1;
3、把原数组的值遍历赋值给新数组
4、把要添加的数赋值在新数组的最后一个位置
5、把新数组 地址传递给 原数组,实现扩容
代码如下:
import java.util.Scanner;//数组的扩容
public class Array07{
public static void main(String[] args) {
Scanner myScanner = new Scanner(System.in);
int[] arr = {1,2,3};//定义一个静态数组
do{
int[] arrNew = new int[arr.length+1];//容量比原数组大 1
for (int i = 0; i < arr.length ; i++) {
arrNew[i] = arr[i];//把值赋给新数组
}
System.out.println("请输入要添加的数");
int num = myScanner.nextInt();//键盘输入要添加的值
arrNew[arrNew.length-1] = num;//增加新元素
arr = arrNew;//地址传递实现原数组的扩容
for (int i = 0;i < arr.length ; i++) {
System.out.println(arr[i]+"\t");//输出新的数组
}
System.out.println("添加成功,是否继续?");
char ans = myScanner.next().charAt(0);//判断是否还需要继续扩容
if(ans != 'y'){
break;
}
}while(true); //条件默认设置为真,在do里面判断条件,
//如果不满足则退出循环
System.out.println("你退出了添加");
}
}
二、数组的缩减
1、数组的缩减相对于数组的扩容更简单,因为不用输入新元素,但是也需要判断当数组长度为 1 时 ,需要退出删除操作。代码如下
import java.util.Scanner;
public class Array08{
public static void main(String[] args) {
Scanner myScanner = new Scanner(System.in);
int[] arr = {1,2,3,5,8,9,22,44};
do{
int[] arrNew = new int[arr.length-1];
for (int i = 0; i < arr.length-1 ; i++) {//删除最后一个元素后数组长度 - 1
arrNew[i] = arr[i];//赋值
}
arr = arrNew; //指向同一个地址
for (int i = 0;i < arr.length ; i++) {
System.out.println(arr[i]+"\t");//输出新的数组
}
if(arr.length < 2){
System.out.println("已经是最后一个元素,不能删除!");
break;
}
System.out.println("删除成功,是否继续?");
char ans = myScanner.next().charAt(0);//键盘输入是否继续删除
if(ans != 'y'){
break;
}
}while(true);
System.out.println("你退出了删除");
}
}
版权声明:本文为qq_45821255原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。