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();
}
}
}
