java實現陣列的增刪改查
阿新 • • 發佈:2019-02-11
難點1.刪除之後如何更改陣列下標
陣列下標無法更改,此處巧妙使用api中Arrays.copeof:
java.util.Arrays.copyOf(T[] original, int newLength) 方法複製指定的陣列,擷取或用null填充(如有必要),以使副本具有指定的長度。對於這一切都有效同時在原陣列和副本索引,這兩個陣列將包含相同的值。對於在副本中有效,但不是原來的任何索引,副本將包含null。這些索引存在,當且僅當指定長度大於原陣列。結果陣列是完全一樣的類作為原始陣列的。
難點2:陣列越界之後能使其可以重新輸入
方法:設定標誌
此程式碼為練習程式碼,先為陣列定義下表然後賦值,進行增刪改查操作
import java.lang.reflect.Array; import java.util.Arrays; import java.util.Scanner; public class TestArray { public static void main(String[] args) { int[] array; int subscript, key,temp;; Scanner in = new Scanner(System.in); System.out.println("input subscript :"); subscript = in.nextInt();//下標 array = new int[subscript]; //assignment System.out.println("assignment please"); assignment(array); System.out.println("---------------"); System.out.println(Arrays.toString(array)); //modify System.out.println("modify please :"); key = in.nextInt(); temp = in.nextInt(); boolean b = true; while(b){ if(key>=array.length){ System.out.println("array out of range,input again"); key = in.nextInt(); }else{ b = false; } } modify(array,key,temp); System.out.println("---------------"); System.out.println(Arrays.toString(array)); //delete System.out.println("input delete number please"); temp = in.nextInt(); delete(array,temp); System.out.println("---------------"); array=Arrays.copyOf(array, array.length-1); System.out.println(Arrays.toString(array)); //add System.out.println("input add number please"); temp = in.nextInt(); System.out.println("---------------"); array=Arrays.copyOf(array, array.length+1); add(array,temp); System.out.println(Arrays.toString(array)); //querry System.out.println("input querry number please"); temp = in.nextInt(); System.out.println("---------------"); System.out.println(querry(array,temp)); } private static int querry(int[] array, int temp) { // TODO Auto-generated method stub int i; for ( i = 0; i < array.length; i++) { if(array[i]==temp){ break; } } return i; } private static void add(int[] array, int temp) { // TODO Auto-generated method stub array[array.length-1]=temp; } private static void delete(int[] array, int temp) { // TODO Auto-generated method stub int i; for (i = 0; i < array.length; i++) { if(array[i]==temp) break; } for(int j=i;j<array.length-1;j++){ array[j]=array[j+1]; } } private static void modify(int[] array, int key,int temp) { // TODO Auto-generated method stub array[key] = temp; } //delete private static void assignment(int[] array){ Scanner input = new Scanner(System.in); for (int i = 0; i < array.length; i++) { array[i] = input.nextInt(); } } }