import java.util.Scanner;
public class ArrayAdd_Reduce{
public static void main (String[] args){
/*
实现对数组内元素的动态添加与减少!此处元素均使用整型
*/
//实现数组扩容
Scanner myScanner1 = new Scanner(System.in);//创建一个scanner接收
int[] arr1 = {1,2};//静态定义一个合适的数组
char key1;//声明一个字符类型的变量,为后面可以退出添加或操作做准备
//涉及到需要输入什么而退出循环,我首选do~while
System.out.println("数组扩容操作开始!");
System.out.print("目前的数组情况为: ");
for(int i = 0; i < arr1.length; i++){
System.out.print(arr1[i] + " ");
}
do{
int[] arrNew = new int[arr1.length + 1];
for(int i = 0; i < arr1.length; i++){
arrNew[i] = arr1[i];//把arr1的地址拷贝给arrNew,不过最后一个元素位置是空的
}
System.out.println("\n" + "请输入您想添加的元素: ");
int add_num = myScanner1.nextInt();
arrNew[arrNew.length - 1] = add_num;
arr1 = arrNew; //让arr1于arrNew都访问同一个地址
System.out.print("添加后的数组情况为: ");
for(int i = 0; i < arr1.length; i++){
System.out.print(arr1[i] + " ");
}
System.out.println("\n" + "是否继续添加? 输入n退出,其他任意键继续!");
key1 = myScanner1.next().charAt(0);
if(key1 == 'n'){
break;//break,默认退出最近的循环,此处为do~while
}
}while(true);
System.out.println("数组扩容操作结束!");
//实现数组缩减
System.out.println("数组缩减操作开始!");
Scanner myScanner2 = new Scanner(System.in);
int[] arr2 = {1,2,3};//静态定义一个数组
char key2;//声明一个后面会用到退出循环的变量,主动退出
int time = arr2.length;//定义一个强制退出的变量
System.out.print("现有数组情况为: ");//先打印出现有数组内的元素情况
for(int i = 0; i < arr2.length; i++){
System.out.print(arr2[i] + " ");
}
do{
System.out.println("\n" + "是否缩减? 输入n退出,其他任意键继续!");
key2 = myScanner1.next().charAt(0);
if(key2 == 'n'){
break;//break,默认退出最近的循环,此处为do~while
}
int[] arrNew2 = new int[arr2.length - 1];//新的数组比原来的数组少存一个元素就能缩减了
for(int i = 0; i < arrNew2.length; i++){
arrNew2[i] = arr2[i];//从头把arr2中的元素拷贝到新的数组
}
arr2 = arrNew2;//使arr2也访问新得到数组内容
time--;//执行一次缩减time就减1
System.out.print("缩减后数组的情况为: ");
for(int i = 0; i < arr2.length; i++){
System.out.print(arr2[i] + " ");
}
if(time == 1){//t当前数组内元素个数为1执行该判断
System.out.println("当前数组内元素剩余一个无法再缩减,结束缩减操作!");
return;
}
}while(true);
System.out.println("数组缩减操作结束!");
}
}
/*
此代码运行环境: 写于Sublinme Text3,由Dos系统编译
注: 本人实现数组的增减的思路目前比较简单,仅是通过数组地址拷贝的性质,且增减功能都是自后向前,有待改进。
*/
主动结束操作
因数组内元素只剩下一个而强制退出