06-01 Java 二維數組格式、二維數組內存圖解、二維數組操做

二維數組格式1java

/*
    二維數組:就是元素爲一維數組的一個數組。
    
    格式1: 數據類型[][] 數組名 = new 數據類型[m][n]; m:表示這個二維數組有多少個一維數組。 n:表示每個一維數組的元素有多少個。
        
    注意:
        A:如下格式也能夠表示二維數組
            a:數據類型 數組名[][] = new 數據類型[m][n];
            b:數據類型[] 數組名[] = new 數據類型[m][n];
        B:注意下面定義的區別
            int x;
            int y;
            int x,y;
            
            int[] x;
            int[] y[];
            
            int[] x,y[];//這個x是一維數組,y是二維數組
*/
class Array2Demo {
    public static void main(String[] args) {
         //定義一個二維數組
         int[][] arr = new int[3][2];
         //定義了一個二維數組arr
         //這個二維數組有3個一維數組的元素
         //每個一維數組有2個元素
         //輸出二維數組名稱
         System.out.println(arr); //地址值    [[I@175078b
         //輸出二維數組的第一個元素一維數組的名稱
         System.out.println(arr[0]); //地址值    [I@42552c
         System.out.println(arr[1]); //地址值    [I@e5bbd6
         System.out.println(arr[2]); //地址值    [I@8ee016
         //輸出二維數組的元素
         System.out.println(arr[0][0]); //0
         System.out.println(arr[0][1]); //0
    }
}

格式1內存圖解:數組

 

 二維數組格式2spa

/*
    格式2:
        數據類型[][] 數組名 = new 數據類型[m][];
        
        m:表示這個二維數組有多少個一維數組。
        列數沒有給出,能夠動態的給。這一次是一個變化的列數。
*/
class Array2Demo2 {
    public static void main(String[] args) {
        //定義數組
        int[][] arr = new int[3][];
        
        System.out.println(arr);    //[[I@175078b
        System.out.println(arr[0]); //null
        System.out.println(arr[1]); //null
        System.out.println(arr[2]); //null
        
        //動態的爲每個一維數組分配空間
        arr[0] = new int[2];
        arr[1] = new int[3];
        arr[2] = new int[1];
        
        System.out.println(arr[0]); //[I@42552c
        System.out.println(arr[1]); //[I@e5bbd6
        System.out.println(arr[2]); //[I@8ee016
        
        System.out.println(arr[0][0]); //0
        System.out.println(arr[0][1]); //0
        //ArrayIndexOutOfBoundsException
        //System.out.println(arr[0][2]); //錯誤
        
        arr[1][0] = 100;
        arr[1][2] = 200;
    }
}

 二維數組格式2  內存圖解:code

二維數組格式3 對象

/* 格式3: 基本格式: 數據類型[][] 數組名 = new 數據類型[][]{{元素1,元素2...},{元素1,元素2...},{元素1,元素2...}}; 簡化版格式: 數據類型[][] 數組名 = {{元素1,元素2...},{元素1,元素2...},{元素1,元素2...}};
            
        舉例:
            int[][] arr = {{1,2,3},{4,5,6},{7,8,9}};
            int[][] arr = {{1,2,3},{4,5},{6}};
*/
class Array2Demo3 {
    public static void main(String[] args) {
        //定義數組
        int[][] arr = {{1,2,3},{4,5},{6}};
        
        System.out.println(arr);
        System.out.println(arr[0]);
        System.out.println(arr[1]);
        System.out.println(arr[2]);
        
        System.out.println(arr[0][0]); //1
        System.out.println(arr[1][0]); //4
        System.out.println(arr[2][0]); //6
        
        System.out.println(arr[0][1]); //2
        System.out.println(arr[1][1]); //5
        //越界
        System.out.println(arr[2][1]); //錯誤
    }
}

二維數組格式3  內存圖解:blog

 遍歷二維數組內存

/*
    需求:二維數組遍歷
    
    外循環控制的是二維數組的長度,其實就是一維數組的個數。
    內循環控制的是一維數組的長度。
*/
class Array2Test {
    public static void main(String[] args) {
        //定義一個二維數組
        int[][] arr = {{1,2,3},{4,5,6},{7,8,9}};
        
        //用方法改進
        //調用方法
        printArray2(arr);
    }    
    
    /*
        需求:遍歷二維數組
        兩個明確:
            返回值類型: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();
        }
    }
}

二維數組求和:io

/*
    公司年銷售額求和
    某公司按照季度和月份統計的數據以下:單位(萬元)
    第一季度: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+"萬元");
    }
}

 

二維數組樹出楊輝三角:打印楊輝三角形(行數能夠鍵盤錄入)class

/*

    需求:打印楊輝三角形(行數能夠鍵盤錄入)
    
    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<=x; y++) {
                System.out.print(arr[x][y]+"\t");
            }
            System.out.println();
        }
    }
}

相關文章
相關標籤/搜索