二維數組的練習(楊輝三角)

練習一:

獲取arr數組中所有元素的和。提示:使用for循環的嵌套循環,遍歷即可
在這裏插入圖片描述

public class Test {
	
	public static void main(String[] args) {
		int[][] arr = new int[][]{{3,5,8},{12,9},{7,0,6,4}};
		
		int sum = 0;//記錄總和,開始遍歷
		for(int i = 0;i < arr.length;i++){
			for(int j = 0;j < arr[i].length;j++){
				sum += arr[i][j];
			}
		}
		
		System.out.println("總和爲:" + sum);
	}
	
}

練習二

聲明:int[]x,y[];在給x,y變量賦值以後,以下選項允許通過編譯的是:(提示:
一維數組:int[] x或者intx[]
二維數組:int[][] y或者int[] y[]或者inty[][])

  • a)  x[0] =y; 
    
  • b) y[0] =x;
    
  • c) y[0][0]= x;
    
  • d) x[0][0]= y;
    
  • e) y[0][0] =x[0];
    
  • f)   x = y;
    

解決這個問題我們要先來明確x,y是什麼類型的變量
x是int型的一維數組或者 叫一維數組,元素是int型的
y是int型的二維數組
考察點一:
先確定x、y的類型。
原先我們說過定義x,y是這樣的int x;int y;。若類型一樣則可以寫成int x,y;(合併起來定義)
如果在前面加一個[] ,int [] x,y;則x,y都爲一維數組
但現在結構爲int [] x,y [] ;這個結構即爲int[] x;與int[] y[];拼在了一起。
所以現在的y是一個二維數組。
考察點二
類型和類型之間變量賦值的規則,要麼是同個類型,要麼是滿足自動類型的提升
答案:
a) x[0] =y; 錯誤 。 y爲二維數組,x[0]連一維數組都不算,只是一個int 的一個數
b) y[0] =x; 正確 。 x是一維,y[0]是二維中的一個元素,是一維的。
c) y[0][0]= x; 錯誤。 x是一維的,y[0][0]是int型的一個數
d) x[0][0]= y;錯誤。 寫法都錯了 x[0][0],一維數組不能這樣寫
e) y[0][0] =x[0]; 正確。 兩邊都是int型的一個數
f) x = y; 錯誤。 y是二維的,x是一維的

練習三:

 使用二維數組打印一個10行楊輝三角。

【提示】
1、第一行有1個元素,第n行有n個元素
2、每一行的第一個元素和最後一個元素都是1
3、從第三行開始,對於非第一個元素和最後一個元素的元素。即:
yanghui[i][j] = yanghui[i-1][j-1] + yanghui[i-1][j];
在這裏插入圖片描述

三步驟:
1.聲明並初始化二維數組
2.給數組的元素賦值
3.遍歷二維數組

public class YangHuiTest {
	
	public static void main(String[] args) {
		//1.聲明並初始化二維數組,應該用動態初始化
		int[][] yangHui = new int[10][];//後面的空格中不能寫,因爲每行的列不一樣。
		
		//2.給數組的元素賦值
		for(int i = 0;i < yangHui.length;i++){
			yangHui[i] = new int[i + 1];
			
			//2.1 給首末元素賦值
			yangHui[i][0] = 1;
			yangHui[i][i] = 1;
			//上面兩行可以合併爲yangHui[i][0] = yangHui[i][i] = 1;
			
			//2.2 給每行的非首末元素賦值
			//if(i > 1){if可以不寫,因爲如果i=1時,
						//下面的for中yangHui[i].length - 1結果爲0,無法進入循環。所以可以省略
			for(int j = 1;j < yangHui[i].length - 1;j++){
				yangHui[i][j] = yangHui[i-1][j-1] + yangHui[i-1][j];
			}
			//}
		}
		
		
		//3.遍歷二維數組
		for(int i = 0;i < yangHui.length;i++){
			for(int j = 0;j < yangHui[i].length;j++){
				System.out.print(yangHui[i][j] + "  ");
			}
			System.out.println();
		}
		
		
		
	}
	
	
}

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章