https://www.cnblogs.com/wanghang/p/6299890.html
java二維數組三個案例詳解
案例一:遍歷二維數組
/* 需求:二維數組遍歷 外循環控制的是二維數組的長度,其實就是一維數組的個數行數。 內循環控制的是一維數組的長度,每一行,一維數組元素分別的個數。 */ 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(); } } }
案例二:
公司季度營業額求和。(考察二維數組的遍歷在實際中的應用,學會轉換)
/* 公司年銷售額求和 某公司按照季度和月份統計的數據如下:單位(萬元) 第一季度: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+"萬元"); } }
案例三:
打印楊輝三角形(行數可以鍵盤錄入)
/* 需求:打印楊輝三角形(行數可以鍵盤錄入) 1 1 1 1 2 1 1 3 3 1 1 4 6 (4) 1 1 5 10 10 5 1 分析:看這種圖像的規律 A:任何一行的第一列和最后一列都是1 B:從第三行開始,每一個數據是它上一行的前一列和它上一行的本列之和。如(4)=3+1 步驟: 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開始,因為第一列也是有值了,第一列不用再賦值,所以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<=x; y++) {//注意這里不是寫成y<arr[x].length,要實現“階梯形狀”的固定寫法y<=x。與九九乘法表類似 System.out.print(arr[x][y]+"\t"); } System.out.println(); } } }