JAVA 數組

1. 什麼是數組?

數組是存儲同一種數據類型多個元素的集合。也可以看成是一個容器。

數組既可以存儲基本數據類型,也可以存儲引用數據類型。

2. 數組的定義與使用

public static void main(String[] args){
	/* 
		數組的定義
			1. int[] arr;
			2. int arr[];
	*/
//	int arr[];
//	System.out.println(arr[0]);
	/*
		但是僅僅定義好的數組裏面是沒有元素值的
		如上面兩行代碼,編譯時會報錯
		
		錯誤: 可能尚未初始化變量arr
		
		所以數組使用前需要初始化,
		就是爲數組中的數組元素分配內存空間,併爲每個數組元素賦值。
		初始化有兩種方式:
			|-- 靜態初始化:給出初始化值,由系統決定長度
				數據類型[] 數組名 = new 數據類型[]{元素 1,元素 2,…}; 
				
			|-- 動態初始化:只指定長度,由系統給出初始化值 
				數據類型[] 數組名 = new 數據類型[數組長度]; 
				
		注意事項:   
			不要同時動態和靜態進行。   
			如下格式:    
				int[] arr = new int[3]{1,2,3}; //錯誤 
	*/
	// 靜態初始化
	int[] staticArr = new int[]{1,2,3};
	System.out.println(staticArr[0]); // 1
	//動態初始化, 整形數組默認值爲 0
	int[] DynamicArr = new int[3];
	System.out.println(DynamicArr[0]);// 0
}

3. 數組常見操作 

1. 數組遍歷(依次輸出數組中的每一個元素) 

2. 數組獲取最值(獲取數組中的最大值最小值) 

3. 數組元素逆序 (就是把元素對調) 

4. 數組查表法(根據鍵盤錄入索引,查找對應星期) 

5. 數組元素查找(查找指定元素第一次在數組中出現的索引) 

 

4. 二維數組

public static void main(String[] args){
	/* 
		二維數組的定義
		格式一:
			1. 數據類型[][] 變量名 = new 數據類型[m][n];
			   數據類型[] 數組名[] = new 數據類型[m][n]; 
				|-- m 表示這個二維數組有多少個一維數組
				|-- n 表示每個一維數組的元素個元素
			2. int arr[];
	*/
	// 定義一個二維數組
	int[][] arr1 = new int[3][2];
	//輸出二維數組的元素
	System.out.println(arr1[0][0]); // 0
	
	/*
		格式二:
			數據類型[][] 變量名 = new 數據類型[m][];
			m 表示這個二維數組有多少個一維數組
			這一次沒有直接給出一維數組的元素個數,可以動態的給出。 
	*/
	//定義數組
	int[][] arr2 = new int[3][]; 
	arr2[0] = new int[2];
	arr2[1] = new int[3];
	arr2[2] = new int[1]; 
	System.out.println(arr2[0][0]); // 0 
	
	/*
		格式三:
			數據類型[][] 變量名 = new 數據類型[][]{{元素…},{元素…},{元素…}};
			簡化版格式: 
				數據類型[][] 變量名 = {{元素…},{元素…},{元素…}}; 
			
	*/
	int[][] arr3 = {{1,2,3},{4,5},{6}}; 
	System.out.println(arr3[0][0]); // 1 
	
}

 

5. 練習:打印楊輝三角

/* 
 
 需求:打印楊輝三角形(行數可以鍵盤錄入)
 1
 1 1
 1 2 1
 1 3 3 1
 1 4 6 4 1
 1 5 10 10 5 1
 
 分析:看這種圖像的規律
	A:任何一行的第一列和最後一列都是1   
	B:從第三行開始,每一個數據是它上一行的前一列和它上一行的本列之和。

 步驟:
	A:首先定義一個二維數組。行數如果是n,我們把列數也先定義爲n。     
		這個n的數據來自於鍵盤錄入。
	B:給這個二維數組任何一行的第一列和最後一列賦值爲1
	C:按照規律給其他元素賦值
		從第三行開始,每一個數據是它上一行的前一列和它上一行的本列之和。
	D:遍歷這個二維數組。 */ import java.util.Scanner; 
 
class PrintPic{
	public static void main(String[] args){   
		//創建鍵盤錄入對象
		Scanner sc = new Scanner(System.in);
		//這個n的數據來自於鍵盤錄入。
		System.out.println("請輸入一個數據:");
		int n = sc.nextInt();
		//定義二維數組
		int[][] arr = new int[n][n];
		//給這個二維數組任何一行的第一列和最後一列賦值爲1
		for(int i=0; i<arr.length; i++){
			arr[i][0] = 1; //任何一行第1列
			arr[i][i] = 1; //任何一行的最後1列   
		}
			//按照規律給其他元素賦值
			//從第三行開始,每一個數據是它上一行的前一列和它上一行的本列之和。
		for(int i=2; i<arr.length; i++){
			//這裏如果y<=x是有個小問題的,就是最後一列的問題
			//所以這裏要減去1
			//並且y也應該從1開始,因爲第一列也是有值了
			for(int j=1; j<=i-1; j++) {
				//每一個數據是它上一行的前一列和它上一行的本列之和。
				arr[i][j] = arr[i-1][j-1] + arr[i-1][j];
			}
		}
		//遍歷這個二維數組。
		//這個時候,要注意內循環的變化
		for(int i=0; i<arr.length; i++){
			for(int j=0; j<=i; j++){
				System.out.print(arr[i][j]+"\t");
			}
			System.out.println();
		}
	} 
} 

 

發佈了26 篇原創文章 · 獲贊 3 · 訪問量 8002
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章