1. 程式人生 > >java實現陣列的增刪改查

java實現陣列的增刪改查

難點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();
		}
	}

}