public class ArrayQ{
static int[] arr = new int[5];
static int size = 0;
public static void main(String[] args){
insert(0,111);
insert(1,222);
insert(2,333);
insert(3,444);
insert(4,555);
insert(5,666);
insert(6,777);
print();
insert(2,222222222);
print();
query(5);
print();
replace(4,4444444);
delete(3);
print();
}
//为数组插入一个值
public static void insert(int xb , int z){
if(size == arr.length){
expand();
}
chake(xb);
for(int i = size ; i > xb ; i--){ //插入一个数,数组整体向后移动一位,移动后值为前一个值,移动方式为从后至前
arr[i] = arr[i-1]; //移动后的值
}
arr[xb] = z; //储存值
size++; //插入一个数后有效数增加1
}
//扩容 即声明一个新数组 将原数组复制后更换地址
public static void expand(){
int[] newArr = new int[arr.length*2]; //声明
System.arraycopy(arr , 0 , newArr , 0 ,arr.length); //复制数组 从原第一位到新第一位起 长度为原数组长度
arr = newArr; //更换地址 方法为将新数组名赋给原数组名
}
public static int query(int xb){ //查询 输入下标赋给arr[]
chake(xb);
return arr[xb];
}
//替换 将数组某一位数替换为新数
public static void replace(int xb , int z){
chake(xb);
arr[xb] = z;
}
//删除 将原数组某项删除 ,并让删除后那位起每一项前移1位,前移从后至前
public static void delete(int xb){
chake(xb);
for(int i = xb; i < size-1 ; i++){
arr[i] = arr[i+1];
}
size--;
}
//输出函数、有效范围内
public static void print(){
for(int i = 0 ; i <size ; i++){
System.out.print(arr[i]+"\t");
}
System.out.println();
}
//判断函数,用于有参数的函数
public static void chake(int xb){
if( xb < 0 || xb > size){
System.out.println("输入错误");
return;
}
}
}