天天看點

數組的增删改查

數組(Array)是有序的元素序列。若将有限個類型相同的變量的集合命名,那麼這個名稱為數組名。組成數組的各個變量稱為數組的分量,也稱為數組的元素,有時也稱為下标變量。用于區分數組的各個元素的數字編号稱為下标。

  1. 數組的三種初始化方式

    1、靜态初始化:沒有new關鍵字直接給數組複制。

    int[] arr = { 12 , 23 , 55 }; 無需定義數組的長度,它會根據你夫所指的個數自動比對長度。

    2、動态初始化:運用new定義長度,需要時進行指派

    int[] = new int[3];

    arr[0] = 2 ;

    arr[1] = 5 ;

    arr[2] = 7 ;

    3、預設初始化:當數組一經配置設定空間,其中每個元素就會隐式初始化

    int[] arr = new int[3]; 此時已有預設的初始化值

  2. 求數組之和
int sum = 0 ;
		Scanner sc = new Scanner(System.in);   
		for(int i = 1 ; i <= 10 ; i++){
			System.out.print("請輸入第" + i + "個學生的乘積");
			int score = sc.nextInt();     //接收從鍵盤上輸入的數字
			sum += score;
		}
           
  1. 數組的周遊
int sum = 0;
		Scanner sc = new Scanner(System.in);
		int[] scores = new int[10];
		for(int i = 0 ; i <= 9 ; i++){
			System.out.print("請輸入第" + (i + 1) + "個學生的成績:");
			int score = sc.nextInt();
			scores[i] = score;   //i表示循環的次數,也可以表示該數組的下标
		}
		for(int i = 0 ; i <= 9 ; i++){  //利用普通的for輸出數組中的各個數值
			System.out.println("第" + (i + 1) +"學生的成績為:" + scores[i]);
		}
		for(int num : scores){    // 利用增強for循環進行數組的周遊,這種周遊無法取得索引
			System.out.println(num);
		}
           
  1. 數組中的最大值
int[] arr = {4,5,77,7899,4344,333};
		int a = getMaxNum(arr);
		System.out.println(a);
	}
	public static i getMaxNum(int[] arr){
		int maxNum = arr[0];  //随便假設數組中的一個數最大
		for(int i = 0 ; i < arr.length ; i++){
			if(arr[i] > maxNum){
				maxNum = arr[i];  // 如果數組中的數值大于maxNum,那麼将該數指派給maxNum
			}
		}
		return maxNum;
	}
           
  1. 擷取數組中的指定值的索引
int[] arr = {55,22,44,77,88,99,1010};
		Scanner input = new Scanner(System.in);
		System.out.print("請輸入你要查詢的數字:");
		int cha = input.nextInt();
		int a = getIndex(arr,cha);  //調用getIndex方法,傳入數組arr,傳入要查詢的實參,實參是鍵盤上輸入的數字
		if(a != -1){
			System.out.println("你要查詢的索引為:" + a);
		}else{
			System.out.println("查無此人");
		}
	}
	
		public static int getIndex(int[] arr , int ele){
			int index = -1;  //該變量的初始值隻要不是數組的索引即可
			for(int i = 0 ; i < arr.length ; i++){
				if(arr[i] == ele){
					index = i;
					break;
				}
			}
			return index;
		}
           
  1. 在數組中指定位置增加指定數值
int arr[] = {1,2,3,4,6,7,8,9};
		System.out.print("增加元素前的數組:");
		for(int i = 0 ; i < arr.length ; i++){
			if(i != arr.length-1){
				System.out.print(arr[i] + ",");
			}else{
				System.out.print(arr[i] + "\n");  // "\n"為轉義換行字元
			}
		}
		int index = 4;  //在指定索引上添加數
		for(int i = arr.length - 1 ; i >= (index + 1) ; i--){
			arr[i] = arr[i-1];
		}
		arr[index] = 5;
		
		insertEle(arr , 4 , 5);
		System.out.print("增加元素後的數組:");
		for(int i = 0 ; i < arr.length ; i++){
			if(i != arr.length-1){
				System.out.print(arr[i] + ",");
			}else{
				System.out.print(arr[i]);
			}
		}
	}
	//以下是利用方法的形式進行元素的交換
	public static void insertEle(int[] arr , int index , int num){
		//arr.length - 1 :擷取該數組的最後一個數的索引
		//index + 1 : 到要修改的索引的位置
		for(int i = arr.length - 1 ; i >= (index + 1) ; i--){
			arr[i] = arr[i-1];
		}
		arr[index] = num;
	}
           
  1. 在數組中擷取指定數字或者删除指定位置上的數字
int[] arr = {12,13,14,15,20,16,14,17,18};
	System.out.println("删除前的數組是:" + Arrays.toString(arr));  //Arrays.String(srr) 是輸出數組的字元串的方法
	int index = 0;
	for(int i = 0 ; i <  arr.length ; i++){
		if(arr[i] == 20){     //該循環是查詢該數的索引
			index = i;
			break;
		}
	}
	for(int i = index ; i <= (arr.length-2) ; i++){
		arr[i] =  arr[i+1];
	}
	arr[arr.length - 1] = 0;   //删掉的最後一位被替換
	System.out.println("删除後的數組是:" + Arrays.toString(arr));
	}