方法c 数组循环5轮 只保存4轮 不知道为何 当然可以用其他方式返回输入的数字不会少存,只是不明白这里为什么不可以
public class ArrayBox {
//默认数组长度为2
String[] defaultArray=new String[0];
//默认索引号为0
int defaultIndex=0;
//确定数组空间容量是否足够 a
//需要参数 最小长度
//不需要返回值
public void checkCapacity(int minlengthA){
System.out.print("a确定容量"+(defaultIndex+1)+"次 ");
//如果 现有长度不够 去扩容
if(minlengthA>defaultArray.length) {
//调用扩容方法 enlarge
this.enlarge(minlengthA);
}
//如果长度足够 不执行 扩容-存储操作 用现有数组作为储存器
}
//如果数组不够长就扩容 b
//需要参数 最小长度
//不需要返回值
public void enlarge(int minlengthB){
System.out.print("b扩容"+(defaultIndex+1)+"次 ");
//新数组长度等于默认长度加一
int newLength=defaultArray.length+1;
//如果长度改变 调用储存方法 用新数组储存
//接收返回的新数组 替换默认数组
defaultArray=this.save(defaultArray,minlengthB);
//按照这个新的长度 创建一个新数组 旧数组元素全部搬入到新数组中
}
//存入元素 c
//需要参数 老数组数据 足够的长度
//需要返回值 返回新数组
public String[] save(String[] oldArray,int minlengthC){
System.out.print("c储存"+(defaultIndex+1)+"次 ");
//创建新数组长度为最小要求长度
String[] newArray=new String[minlengthC];
//循环 i小于老数组长度 旧数组元素全部搬入到新数组中
for(int i=0;i<oldArray.length;i++){
//x 接收存入值并输出
String x=newArray[i]=oldArray[i];
System.out.print("存"+x+" ");
}
//检测数组现在到底有什么
for(String v:newArray){
System.out.print("内"+v+" ");
}
//返回装满老元素的 新数组
return newArray;
}
//获取元素 d
//需要参数 指定目标位置
//需要返回值 返回目标值
public String obtain(int indexWant){
//System.out.print("d index返回"+(defaultIndex+1)+"次 ");
//检测所需查看的index范围是否合法
this.checkIndex(indexWant);
//如果上面一行代码可以走过去 证明index是合法
//需要目标值 返回目标值
return defaultArray[indexWant];
}
//检测所需查看的index范围是否合法 e
public void checkIndex(int indexView){
//System.out.print("e index检测"+(defaultIndex+1)+"次 ");
//如果index小于零或者大于 默认index
if(indexView<0||indexView>defaultIndex){
System.out.println("index越界");
}
}
//删除元素 f
//需要参数 指定元素,元素位置
//需要返回值 返回新数组(删除目标后)
public String delete(int elementIndex){
//System.out.print("f 删除"+(defaultIndex+1)+"次 ");
//检测所需查看的index范围是否合法
this.checkIndex(elementIndex);
//如果上面一行代码可以走过去 证明index是合法
String result=defaultArray[elementIndex];
for(int i=elementIndex;i<defaultIndex-1;i++){
//从目标元素index开始至数组长度-1为止 将后面位置元素依次前移覆盖
defaultArray[i]=defaultArray[i+1];
}
defaultArray[--defaultIndex] = null;
return result;
}
//方法入口
//需要参数 主方法填入
//需要返回值 返回数组
public int add(String inputParameter){
System.out.print("add已启动第"+(defaultIndex+1)+"次 ");
// 调用a方法 检测长度
this.checkCapacity(defaultIndex+1);
//上面括号内决定数组末尾有几个0;所需长度最少比默认长度要大一个;不然直接报错
System.out.println();
//长度合理 开始存数 索引依次增 挨个存
defaultArray[defaultIndex++]=inputParameter;
//可以没有返回值
return 1;
}
public int defaultIndex(){
return this.defaultIndex;
}
}