}
1:二維數組(理解) (1)元素是一維數組的數組。 (2)格式: A:數據類型[][] 數組名 = new 數據類型[m][n]; B:數據類型[][] 數組名 = new 數據類型[m][]; C:數據類型[][] 數組名 = new 數據類型[][]{{...},{...},{...}}; D:數據類型[][] 數組名 = {{...},{...},{...}}; (3)案例(掌握): A:二維數組的遍歷
* 需求:二維數組遍歷 外循環控制的是二維數組的長度,其實就是一維數組的個數。 內循環控制的是一維數組的長度。*/class Array2Test { public static void main(String[] args) { //定義一個二維數組 int[][] arr = {{1,2,3},{4,5,6},{7,8,9}}; //請問誰代表{1,2,3} //arr[0]就是第一個數組 //arr[0] = {1,2,3}; for(int x=0; x<arr[0].length; x++) { System.out.println(arr[0][x]); } System.out.println("--------------"); for(int x=0; x<arr[1].length; x++) { System.out.println(arr[1][x]); } System.out.println("--------------"); for(int x=0; x<arr[2].length; x++) { System.out.println(arr[2][x]); } System.out.println("--------------"); //用循環改進 for(int x=0; x<3; x++) { for(int y=0; y<arr[x].length; y++) { System.out.print(arr[x][y]+" "); } System.out.println(); } System.out.println("--------------"); //這個時候,注意了,3是我們根據上面的代碼得出來的 //但是,它不能針對任何的數組都可以這樣 //所以,我們應該想辦法改進 //其實,外面的這個循環的長度就是二維數組的長度 for(int x=0; x<arr.length; x++) { for(int y=0; y<arr[x].length; y++) { System.out.print(arr[x][y]+" "); } System.out.println(); } System.out.println("--------------"); //用方法改進 //調用方法 printArray2(arr); System.out.println("--------------"); //我們再來一個列數是變化的 int[][] arr2 = {{1,2,3},{4,5},{6}}; printArray2(arr2); } /* 需求:遍歷二維數組 兩個明確: 返回值類型:void 參數列表:int[][] arr */ public static void printArray2(int[][] arr) { for(int x=0; x<arr.length; x++) { for(int y=0; y<arr[x].length; y++) { System.out.print(arr[x][y]+" "); } System.out.println(); } }}
B:二維數組的求和
/* 公司年銷售額求和 某公司按照季度和月份統計的數據如下:單位(萬元) 第一季度:22,66,44 第二季度:77,33,88 第三季度:25,45,65 第四季度:11,66,99 分析: A:把題目的數據用二維數組來表示 int[][] arr = {{22,66,44},{77,33,88},{25,45,65},{11,66,99}}; B:如何求和呢? 求和其實就是獲取到每一個元素,然后累加即可。 C:定義一個求和變量sum,初始化值是0。 D:通過遍歷就可以得到每一個二維數組的元素。 E:把元素累加即可。 F:最后輸出sum,就是結果。*/class Array2Test2 { public static void main(String[] args) { //把題目的數據用二維數組來表示 int[][] arr = {{22,66,44},{77,33,88},{25,45,65},{11,66,99}}; //定義一個求和變量sum,初始化值是0。 int sum = 0; //通過遍歷就可以得到每一個二維數組的元素。 for(int x=0; x<arr.length; x++) { for(int y=0; y<arr[x].length; y++) { //把元素累加即可。 sum += arr[x][y]; } } //最后輸出sum,就是結果。 System.out.println("一年的銷售額為:"+sum+"萬元"); }}
C:楊輝三角形
/* 需求:打印楊輝三角形(行數可以鍵盤錄入) 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 Array2Test3 { 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 x=0; x<arr.length; x++) { arr[x][0] = 1; //任何一行第1列 arr[x][x] = 1; //任何一行的最后1列 } //按照規律給其他元素賦值 //從第三行開始,每一個數據是它上一行的前一列和它上一行的本列之和。 for(int x=2; x<arr.length; x++) { //這里如果y<=x是有個小問題的,就是最后一列的問題 //所以這里要減去1 //并且y也應該從1開始,因為第一列也是有值了 for(int y=1; y<=x-1; y++) { //每一個數據是它上一行的前一列和它上一行的本列之和。 arr[x][y] = arr[x-1][y-1] + arr[x-1][y]; } } //遍歷這個二維數組。 /* for(int x=0; x<arr.length; x++) { for(int y=0; y<arr[x].length; y++) { System.out.print(arr[x][y]+"/t"); } System.out.println(); } */ //這個時候,要注意了,內循環的變化必須和曾經講過的九九乘法表類似 for(int x=0; x<arr.length; x++) { for(int y=0; y<=x; y++) { System.out.print(arr[x][y]+"/t"); } System.out.println(); } }
} 2:兩個思考題(理解) (1)Java中的參數傳遞問題 Java中只有值傳遞。 基本類型:形式參數的改變不影響實際參數 引用類型:形式參數的改變直接影響實際參數 (2)數據加密問題 綜合的小案例。
/*	把剛才的代碼改進一下:		A:把數據改進為鍵盤錄入		B:把代碼改進為方法實現						另一個數據的測試:		number:1234567		第一步:7654321		第二步:2109876		第三步:6109872			知識點:		變量		數據類型		運算符		鍵盤錄入		語句		方法		數組*/import java.util.Scanner;class JiaMiDemo2 {	public static void main(String[] args) {		//創建鍵盤錄入對象		Scanner sc = new Scanner(System.in);				//請輸入一個數據		System.out.println("請輸入一個數據(小于8位):");		int number = sc.nextInt();				//寫功能實現把number進行加密		//調用		String result = jiaMi(number);		System.out.println("加密后的結果是:"+result);	}		/*		需求:寫一個功能,把數據number實現加密。		兩個明確:			返回值類型:String 做一個字符串的拼接。			參數列表:int number	*/	public static String jiaMi(int number) {		//定義數組		int[] arr = new int[8];				//定義索引		int index = 0;				//把number中的數據想辦法放到數組中		while(number > 0) {			arr[index] = number%10;			index++;			number /= 10;		}				//把每個數據加5,然后對10取得余數		for(int x=0; x<index; x++) {			arr[x] += 5;			arr[x] %= 10;		}				//把第一位和最后一位交換		int temp = arr[0];		arr[0] = arr[index-1];		arr[index-1] = temp;				//把數組的元素拼接成一個字符串返回		//定義一個空內容字符串		String s = "";				for(int x=0; x<index; x++) {			s += arr[x];		}				return s;	}}
新聞熱點
疑難解答