今天被一个同学问到这个对数组的增删改查问题,顺便就整理一下吧:

我是定义了四个函数,用到那个分别调动哪个就可以:

下面代码已经加了详细注释:

import java.util.Scanner;
class curd{
//实现数组的增删改查
public static void main(String[] args) {
int[] a = {1,3,5,9,7,11,52,6,13,19};
System.out.print("原数组为:");
for (int i=0;i<a.length; i++) {
System.out.print(a[i]+"\t");
}
System.out.println();

//调用修改函数
//mod(a);

//调用查找元素
//find(a);

//调用插入函数
ins(a);

//调用删除函数
//del(a);

}
//修改数组中一个元素的值:
public static void mod(int[] a){
Scanner sc = new Scanner(System.in);
System.out.println("请输入一个要修改的数的位数:");
int n = sc.nextInt();
System.out.println("请输入要修改为:");
int s = sc.nextInt();
//先找出位置,再修改
for (int i=0;i<a.length ;i++ ) {
if (n-1==i) {
a[i]=s;
}
}
System.out.print("修改后数组为:");
for (int i=0;i<a.length; i++) {
System.out.print(a[i]+"\t");
}
}
//查找数组中元素的下标
public static void find(int[] a){
Scanner sc = new Scanner(System.in);
System.out.println("请输入一个要查找的数:");
int n=sc.nextInt();
int s=0;
for (int i=0;i<a.length;i++ ) {
if (a[i]==n) {
System.out.println("该数下标为:"+i);
//return;
s++;
}

}
if(s==0){
System.out.println("您查找的元素不存在!");
}
}

//在数组中增加一个元素
public static void ins(int[] a){
Scanner sc = new Scanner(System.in);
System.out.println("请输入一个要插入的数的地址:");
int n = sc.nextInt();
System.out.println("请输入一个要插入的数:");
int s = sc.nextInt();
int b[] = new int[a.length+1];
//先扩容
for (int i=0;i<a.length ;i++ ) {
b[i]=a[i];
}
//插入位置之后的元素后移1位;
for (int j=b.length-1;j>n ;j-- ) {
b[j]=b[j-1];
}

//将要插入的位置之后的元素后移一位;
for (int i=0;i<b.length ;i++ ) {

//如果找到插入地址,原元素后移1位,插入元素放到插入地址上;
if (n==i) {
b[i+1]=b[i];
b[i]=s;
}

}

System.out.print("新增后数组为:");
for (int i=0;i<b.length; i++) {
System.out.print(b[i]+"\t");
}

}

//删除函数
//先查找要删除的数在不在数组中,如果在,将要删除的数改为0
//然后再把后面的元素前移一位;
public static void del(int[] a){
Scanner sc = new Scanner(System.in);
System.out.println("请输入一个要删除的数:");
int n = sc.nextInt();
//定义一个布尔常量
boolean s = false;

//循环查找要删除的数
for (int i=0;i<a.length ;i++ ) {
//查找要删除的元素
if (a[i]==n) {
//如果找到此元素,把s改为true;
s=true;
//将要删除的值设为0
a[i]=0;
//从右向左移位
for (int j=i;j<a.length-1 ;j++ ) {
a[j]=a[j+1];
}
//最后一位设为0
a[a.length-1]=0;
}
}
System.out.println("删除成功!删除后的数组元素为:");

if (s==false) {
System.out.println("数据找不到删除失败!");
}
//再次循环查看数组是否删除成功
for (int i=0;i<a.length ;i++ ) {
System.out.print(a[i]+"\t");
}
}
}