1. 程式人生 > >Java陣列的增刪改查操作

Java陣列的增刪改查操作

import java.util.Scanner;

public class Array {

/*
 * 增刪改查
 * 
 */

/**
 * 根據下標查詢元素
 * 
 * @param arr
 * @param index
 * @return 整型元素
 * @author ZZY
 * @time 2018-12-07 14:35
 */
public static int queryElementByIndex(int[] arr, int index) {

	return arr[index];
}

/**
 * 根據元素查詢下標
 * 
 * @param arr
 * @param ele
 * @return 元素下標
 */
public static int queryIndexByElement(int[] arr, int ele) {

	int index = -1; // 用來記錄下標的變數
	// 1:遍歷所有的元素
	for (int i = 0; i < arr.length; i++) {
		// 2 用你要查詢的元素和所有的元素做==比較
		if (arr[i] == ele) {
			// 3 相等判斷成立,記錄當前元素的下標
			index = i;// 記錄當前元素的下標
			break; // 後面元素就不用判斷了
		}
	}
	return index;
}

/**
 * 求陣列的最大值
 * 
 * @param arr
 * @return 最大值
 */
public static int maxValue(int[] arr) {
	// 1 假設第一個元素是最大值
	int max = arr[0];
	// 2:遍歷陣列
	for (int i = 1; i < arr.length; i++) {
		// 3 用這個個最大值和後面的元素做大於比較
		if (arr[i] > max) {
			// 4如果後面的元素比這個最大值還大,那麼後面的元素就是最大值
			max = arr[i];
		}
	}
	return max;
}

/**
 * 求陣列的最小值
 * 
 * @param arr
 * @return 最小值
 */
public static int minValue(int[] arr) {
	// 1 假設第一個元素是最小值
	int min = arr[0];
	// 2:遍歷陣列
	for (int i = 1; i < arr.length; i++) {
		// 3 用後面的元素這個最小值和做小於比較
		if (arr[i] < min) {
			// 4如果後面的元素比這個最小值還小,那麼後面的元素就是最小值
			min = arr[i];
		}
	}
	return min;
}

/**
 *  給陣列新增元素
 * @param arr
 * @param ele
 * @param index
 * @return  返回新的陣列
 */
public static int[] addElement(int[] arr, int ele, int index) {
	

	// 1:新建一個數組,長度是原陣列長度+1 陣列擴容
	int[] newArr = new int[arr.length + 1];
	if(index>=0 && index<newArr.length){

		// 2 拿到下標為3的前面的元素,放到新陣列按照0 1 2 順序依次存放
		for (int i = 0; i < index; i++) {
			newArr[i] = arr[i];
		}

		// 3 把要新增的元素100放入新陣列下標為3的位置
		newArr[index] = 100;

		// 4 拿到下標為3的後面的元素,放到新陣列按照 4 5 順序依次存放

		for (int i = index; i < arr.length; i++) {
			newArr[i + 1] = arr[i];
		}
	}else{
		System.out.println("索引超出範圍");
		//超出範圍,返回舊陣列
		return arr;
	}		
	
	// 5:返回新陣列
	return newArr;

}

/**
 * 根據下標刪除元素
 * @param arr
 * @param index
 * @return  原陣列
 */
public static int[] delEleByIndex(int[] arr,int index){
	
	if(index>=0 && index<arr.length){
		//1:找到下標為2的元素,後面的元素依次覆蓋前面的元素
		for(int i = index;i<arr.length-1;i++){
			arr[i] = arr[i+1];
		}
		
		//2:把最後一位賦值為0
		arr[arr.length-1] = 0;
		
	}else{
		System.out.println("沒有此下標");
	}
	//3 返回刪除後的陣列
	return arr;
	
}

/**
 * 根據元素刪除元素
 * @param arr
 * @param ele
 * @return  下標
 */
public static int delEleByEle(int[] arr,int ele){
	   //1 :定義刪除元素的下標
		int index = -1;
		
		//2:用你要刪除的元素和數組裡面的每一個元素做==比較
		for(int i = 0;i<arr.length;i++){
			if(ele==arr[i]){
			  //3:找到要刪除的元素後,記錄下當前元素的下標
				index = i;
				break; //後面就不要比較了
			}
		}
		//如果index是-1,直接返回,不需要移位
		if(index==-1){
			return index;
		}
		 //4:然後後面的下標依次向前移位
		for(int i = index;i<arr.length-1;i++){
			arr[i] = arr[i+1];
		}

		//5:把最後一位置為0
		arr[arr.length-1] = 0;
		//6  返回陣列的下標即可
		return index;
}


public static void main(String[] args) {
	int[] arr = { 10, 20, 300, 40, 50 };
	
	int index = delEleByEle(arr,300);
	if(index!=-1){
		for (int i : arr) {
			System.out.println(i);
		}
	}else{
		System.out.println("沒有此元素");
	}
	
	/*arr = delEleByIndex(arr,2);
	for (int i : arr) {
		System.out.println(i);
	}
	*/
	
	
	
	
/*	int[] newArr = addElement(arr,100,-12);
	
	for (int i : newArr) {
		System.out.println(i);
	}*/
	
	/*int max = maxValue(arr);
	int min = minValue(arr);
	System.out.println("最大值是:" + max);
	System.out.println("最小值是:" + min);

/
/

* int index = 0; int ele = queryElementByIndex(arr,index);
* System.out.println(“下標為”+index+“的元素是:”+ele);
*/

	/*
	 * Scanner sc= new Scanner(System.in);
	 * System.out.println("請輸入你要查詢的元素值"); int ele = sc.nextInt(); //你要查詢的元素
	 * int index = queryIndexByElement(arr,ele); // 4:沒有匹配成功,沒有此元素
	 * if(index!=-1){ System.out.println("元素"+ele+"的下標是:"+index); }else{
	 * System.out.println("沒有此元素"); }
	 */

}

}