1. 程式人生 > 其它 >JAVA學習第四天

JAVA學習第四天

二維陣列、楊輝三角

一、今天學了什麼

1.二維陣列

必須注意動態初始化方式2的各種使用情況!

(1)宣告和初始化

int[][] arr1 = new int[][]{{1,2,3},{4,5},{6,7,8}};//靜態初始化,類似巢狀

int[][] arr4 = {1,2,3},{4,5},{6,7,8};//型別推斷

String[][] arr2 = new String[3][2];//動態初始化方式1
String[][] arr3 = new String[3][];//動態初始化方式2

注意:在宣告和初始化中,[]可以放在型別名後,也可以放在陣列名後。

(2)元素呼叫

System.out.println(arr1[0][1]);//
2 System.out.println(arr2[1][1]);//null System.out.println(arr3[1][0]);//報錯,空指標異常。若要使用必須提前指定該陣列的

(3)獲取長度

System.out.println(arr1.length);//3
System.out.println(arr[0].length);//3
System.out.println(arr[1].length);//2

(4)遍歷陣列

for(int i = 0; i < arr1.length; i++)
{
   for(int j =0; j < arr1[i].length; j++)
   {
       System.out.print(arr1[i][j] + "     ");
   }
}
//輸出為:
/*1 2 3
4 5
6 7 8*/

(5)陣列元素預設初始化值

int[][] arr5 = new int[4][3];
System.out.println(arr5[0]);//地址值(一維)
System.out.println(arr5[0][0]);//0
//int、String、float、double型別內層的都與int型別一致,與所對應一維陣列預設初始化值相同
System.out.println(arr5);//也是地址值(二維)這兩處地址不同

//但是必須要注意,使用第二種動態初始化方法時,輸出將於上述不同
double[][] arr6 = new double[4][];
System.out.println(arr6[1]);//null
。因為其每一個外層都應該是一個數組,陣列屬於引用型別,引用型別的預設初始值為null!
System.out.println(arr6[1][0]);//報錯,空指標異常。

小總結:

針對動態初始化方式1:

外層:地址值;

內層:與一維陣列初始化相同。

針對動態初始化方式2:

外層:null;

內層:不能呼叫,否則報錯。

2.楊輝三角小練習:

列印一個10行的楊輝三角

程式碼如下:

int[][] num = new int[10][];
        for(int i = 0; i < 10; i++)
        {
            num[i] = new int[i+1];
            num[i][0] = 1;
            num[i][i] = 1;
            if(i > 1)
            {
                for(int j = 1; j < num[i].length-1; j++)
                {
                    num[i][j] = num[i-1][j-1] + num[i-1][j];
                }
            }
        }
        for(int i = 0; i < num.length; i++)
        {
            for(int j = 0; j < num[i].length; j++)
            {
                System.out.print(num[i][j]+"  ");
            }
            System.out.println();
        }