今天被一个同学问到这个对数组的增删改查问题,顺便就整理一下吧:
我是定义了四个函数,用到那个分别调动哪个就可以:
下面代码已经加了详细注释:
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"); } } }