package javatext;
public class arrar5 {
static int[] nums = new int[5];
static int size = 0;
public static void main(String[] args) {
insert(0, 11);
insert(1, 22);
insert(2, 33);
insert(3, 44);
insert(4, 55);
insert(5, 66);
insert(6, 77);
insert(7, 88);
insert(8, 99);
insert(9, 188);
insert(10, 288);
print();
int target = search(2); System.out.println("您查询的下标位置,对应的值是" + target);
replace(9, 100);
delete(22);
print();
}
// 定义函数添加新值
public static void insert(int position, int value) {
if (size == nums.length) {
expand();
}
// 判断有效下标
if (position < 0 || position > size) {
System.out.println("请输入有效的下标" + size);
return;
}
// 将有效元素,依次往后移动
for (int i = size; i > position; i--) { // i =3, i = 0, 满足三次
nums[i] = nums[i - 1];
}
// 新值的保存
nums[position] = value;
size++;
}
// 删除
public static void delete(int position) {
iflese(position);
// 将目标值的位置,向前移动,(多次循环,直至所有的有效值移动完毕
for (int i = position; i < size - 1; i++) {
nums[i] = nums[i + 1];
}
// position有效值递减
size--;
}
// 替换 (将原位置的下标,对应的值替换)
public static void replace(int position, int value) {
iflese(position);
nums[position] = value;
}
// 查询
public static int search(int position) {
iflese(position);
return nums[position];
}
// 将现有数组进行复制扩容
public static void expand() {
System.out.println("扩容");
int[] newNums = new int[nums.length * 2];
System.arraycopy(nums, 0, newNums, 0, nums.length);
nums = newNums;
}
// 输出内容
public static void print() {
for (int i = 0; i < size; i++) { // 遍历值, size屏蔽无效值
System.out.print(nums[i] + "\t");
}
System.out.println();
}
// 判断输入是否合法
public static void iflese(int position) {
if (position < 0 || position > size) {
System.out.println("输入非法位置请重新输入");
return;
}
}
}