多維(Multi-dimensional)數(shù)組維數(shù)由索引個(gè)數(shù)決定。
常用的數(shù)組:一維(one-dimensional)數(shù)組、二維(two-dimensional)數(shù)組
16.2 創(chuàng)建二維數(shù)組
索引從0開始,創(chuàng)建成表格,第一個(gè)索引是行索引,第二個(gè)索引是列索引。
length屬性:第一個(gè)索引的長度。
16.3 初始化二維數(shù)組:數(shù)值用逗號(hào)分隔,行用大括號(hào)分隔。
16.4 不規(guī)則數(shù)組(ragged array):可變列數(shù)的二維數(shù)組。
如果只聲明但不初始化不規(guī)則二維數(shù)組,必須聲明行數(shù)(第一索引),可以不聲明列數(shù)(第二索引)。
問:不規(guī)則數(shù)組只能是二維嗎?
答:不規(guī)則數(shù)組可以是多維,并且都是必須聲明第一索引就可以了。
自測題:
1. 考慮下列數(shù)組聲明語句,該數(shù)組用于存儲(chǔ)學(xué)生成績的集合
char [][] grades=new char[4][20];
a) 該數(shù)組有幾個(gè)維度?
2個(gè)
b) grades.length的值是多少?
4
c) grades[0].length的值是多少?
20
d) 第一組第一個(gè)學(xué)生的成績?yōu)锽
2. 聲明合適的數(shù)組
a) 進(jìn)球數(shù):20個(gè)球隊(duì),38場比賽
b) 座位:70行座位,每行20個(gè)座位
boolean seats[70][20];
3. 記錄火車晚點(diǎn)情況
a) 一年中第幾周,每周中第幾天晚點(diǎn)次數(shù)
b)
int daysNum=0;
for (int i=0;i<52;i++)
for (int j=0;j<7;j++)
if (late[i][j]==2)
daysNum++;
4.
a) 規(guī)則二維數(shù)組與不規(guī)則二維數(shù)組的區(qū)別:P390
列數(shù)(第二索引)是固定的還是可變的。
b) 不規(guī)則二維數(shù)組triangle
int [][] triangle = new int[4][];
for (int i=0;i<4;i++)
triangle[i]=new int[i+1];
c) triangle中的最大值
int biggestNum;
biggestNum=triangle[0][0];
for (int i=1;i<4;i++)
for (int j=0;j<triangle[i].length;j++)
if (biggestNum < triangle[i][j])
biggestNum=triangle[i][j];
5. 網(wǎng)格布局策略:P397
允許為將要添加的元素設(shè)定行數(shù)和列數(shù)。排列方式由系統(tǒng)設(shè)定,默認(rèn)為從左到右,從上到下。
編程練習(xí):代碼附件
1. VarNoughtsAndCrosses.java RunVarNoughtsAndCrosses.java
2. CheckTrain.java CheckTrainTest.java InvalidDateException.java
3. TimeTable.java TimeTableException.java TimeTableTest.java
TimeTableGUI.java RunTimeTableGUI.java 做界面太消耗時(shí)間了,暫時(shí)不做了。