Java 二維陣列處理 - 翻轉工作室
文章推薦指數: 80 %
既然陣列是由若干個相同資料型態的變數整合而成,變數的排列格式也延伸了不同的陣列格式。
如果所有變數排列成一行或一列,則稱之為『一維陣列』(如 array[]);如果排列成 ...
Java
程式設計(一)
:第
七章
陣列
上一頁
下一頁
7-3二維陣列處理
內容:
7-3-1二維陣列宣告
7-3-2
範例研討:印出二維陣列內容
7-3-3
自我挑戰:二維陣列內容加倍
7-3-4
範例研討:印出二維轉陣列
5-3-5
自我挑戰:列印直式唐詩
既然陣列是由若干個相同資料型態的變數整合而成,變數的排列格式也延伸了不同的陣列格式。
如果所有變數排列成一行或一列,則稱之為『一維陣列』(如array[]);如果排列成平面形狀,則稱為『二維陣列』(如array[][]);如果是立體形狀,則為『三維陣列』(如array[][][]);如是四度空間型態,則是『四維陣列』(如array[][][][]),其中每一維都需要一個變數作為指標,索引其相對位置。
各種陣列型態都有其運用範圍,如沒有特殊情況的話,還是一維與二維陣列的應用最普遍,本書僅介紹到二維陣列,更多維數陣列的處理方式,也大致相同的。
7-3-1二維陣列宣告
將變數排列成『縱橫』的平面形狀,則稱之為『二維陣列』,如圖7-3所示。
二維陣列需要兩個位置指標,如score[x][y]變數,前面指標(如x)是標示第幾行數(由0開始);第二個指標(如y),則標示第幾列數;如是4*3陣列共計有12個相同型態(int)變數的元素。
另外,陣列被宣告完成之後(如intscore[][]={..}),則score.length變數儲存該陣列的行數;又score[x].length儲存該行(x)元素的數目(即是列數目)。
宣告語法如下所示:
圖7-6二維陣列的結構
二維陣列宣告語法:
範例:
Data_type
Array_name[][];
Array_name=
newData_type[num1][num2];
Data_type[][]
name=newData_type[num1][num2];
intscore[];
score=
int[20][10];
int[][]
score=newint[20][10];
Data_type
Array_name[][]={…};
int
score[][]={{1,2,3},
{4,5,6},
{7,8,9},
{10,11,
12}};
第一行語法是宣告產生二維陣列,第二行則再給予初值。
如敘述句如:int[][]score={{1,2,3},{4,5,6},{7,8,9},{10,11,12}};則產生各個元素與變數內容如下:
score[0][0]=1,score[0][1]=2,score[0][2]=3 =>score[0].length=3
score[1][0]=4,score[1][1]=5,score[1][2]=6 =>score[1].length=3
score[2][0]=7,score[2][1]=8,score[2][2]=9 =>score[2].length=3
score[3][0]=10,score[3][1]=11,score[3][2]=12 =>score[3].length=3
score.length=4
7-3-2範例研討:印出二維陣列內容
(A)程式功能:Ex7_4.java
請編寫一程式,印出陣列score[][]={{1,2,3},{4,5,6},{7,8,9},{10,11,12}}內容並依照相對位置排列(平面形狀)。
期望操作介面如下:
D:\Java2_book\chap3>javacEx3_1.java
D:\Java2_book\chap3>javaEx3_1
1 2 3
4 5 6
7 8 8
10 11 12
(B)製作技巧研討:
吾人利用x與y變數作為陣列位置索引,x是行數指標,y為列數指標,則任何一元素可由score[x][y]表示。
如欲平面型態印出陣列內容,則需要二重迴圈敘述,外迴圈標示共計列印幾行(x=0,1,…,score.length);內迴圈索引每行的列數(y=0,1,2,…,score[x].length)。
(C)程式範例:
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
//Ex7_2.java
publicclassEx7_2{
publicstaticvoidmain(Stringargs[]){
intscore[][]={{1,2,3},
{4,5,6},
{7,8,8},
{10,11,12}};
intx; //
行指標
(外迴圈)
inty; //
列指標
(內迴圈)
for(x=0;x
(C)程式片段
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
//Ex3_2.java
publicclass
Ex3_2{
/*宣告類別變數
score[]*/
staticint
score[][]={{1,2,3},
{4,5,6},
{7,8,8},
{10,11,12}};
/*
主程式
main()*/
public
staticvoidmain(Stringargs[]){
System.out.printf("原陣列內容:\n");
disp_Arr();
for(intx=0;x
當外迴圈i=0時,印出順序(j=0、1,、2)是score[0][0]=1、score[1][0]=4、score[2][0]=7,當i=1時,印出順序是score[0][1]=2、score[1][1]=5、score[2][1]=8,當i=2時,印出順序是score[0][2]=3、score[1][2]=6、score[2][2]=9。
(C)程式範例
01
02
03
04
05
06
07
08
09
10
11
12
public
classEx7_5{
publicstaticvoidmain(Stringargs[]){
intscore[][]={{1,2,3},
{4,5,6},
7,8,9}};
System.out.printf("列印原陣列如下:\n");
for(inti=0;i
其中包含兩困難點,一者是如何將一串文字輸入,分別取出每一個文字,再存入陣列元素內;另一者是如何轉換陣列的行與列印出(直式列印)。
前者,吾人將一串文字直接讀入系統並存放某字串變數(data)內(利用Scanner物件),再將該變數宣告成掃瞄物件(Scanner物件)並指定分隔符號為沒有空格(useDelimiter("")),接著即可掃瞄取出每一個文字,再分別存入陣列內,如圖7-4所示。
圖7-8poem[][]陣列儲存內容
唐詩內所有文字都依序存入陣列後。
原先是依照一行接一行填入文字,如果一行接一行印出,則如同輸入格式一樣是橫式輸出;如果將行與列倒過來印,則是直式輸出。
虛擬碼提示如下:
虛擬碼提示如下:
導入相關套件(java.util.Scanner);
宣告唐詩陣列(String[][]
poem=newString[4][5]);
讀入五言四句唐詩:
for(inti=0;i<4;i++){
System.out.printf("請輸入第
%d句(五個字)
=>",i+1);
data=keyin.next();
Scanners=new
Scanner(data).useDelimiter("");
for(intj=0;j<5;j++) //
分別讀取詩句中每一個文字
poem[i][j]=s.next();
}
列印橫式唐詩:
for(inti=0;i<4;i++){ //
列印
4行
for(intj=0;j<5;j++) //
每行
5個字
System.out.printf("%s ",poem[i][j]);
System.out.printf("\n");
}
列印直式唐詩:
for(intj=0;j<5;j++){ //
列印
5行
for(inti=0;i<4;i++) //
每行
4個字
System.out.printf("%s ",poem[i][j]);
System.out.printf("\n");
}
翻轉工作室:粘添壽
Java程式設計(一)含程式邏輯
第一章認識Java
與程式開發
第二章
Java
程式架構與輸入/輸出
第三章
算術運算式
第四章順序與分歧流程
第五章重複性流程
第六章
方法與套件引用
第七章
陣列
7-1陣列結構
7-2專題研討:一維陣列
7-3二維陣列處理
7-4陣列線性搜尋
7-5泡沫排序法
7-6陣列資料結構
7-7專題研討:陣列運用
翻轉電子書系列:
資訊與網路安全技術
Java程式設計(一)含程式邏輯
Java
程式設計(二)含物件導向
資料庫程式設計-PHP+MySQL
資料庫系統概論(含邏輯設計)
網路規劃與管理技術
電腦網路與連結技術
TCP/IP協定與Internet網路
電子商務安全概論
Linux伺服器管理-CentOS
Unix/Linux系統管理實務
延伸文章資訊
- 1二維陣列| Java SE 6 技術手冊 - caterpillar
在上面的宣告中,arr 是個int[] 型態的參考名稱,程式會為arr 配置可以儲存10 個int 整數的一維陣列物件,索引為0 到9,初始值預設為0,在Java 中配置陣列之後,若還沒有 ...
- 2Java一維,二維陣列的定義與簡單使用 - 程式人生
println(arr1.length);. 方式二:宣告陣列和分配內同時進行. int[] ...
- 3二維陣列
取得二維陣列元素值. 07 08. 09 10. 03. 01. 04. 05 06. 02. D路. 18號 import java.util.Arrays; class web{ publi...
- 4如何在Java 中獲取一個二維陣列的長度 - Delft Stack
Java 中的二維陣列是一個陣列的陣列,即一個陣列的元素是另一個陣列。例如, test = new int[5][10]; 代表一個包含5 個元素的陣列,這5 個元素分別 ...
- 5Java 二維陣列 - 翻轉工作室
既然陣列是由若干個相同資料型態的變數整合而成,變數的排列格式也延伸了不同的陣列格式。如果所有變數排列成一行或一列,則稱之為『一維陣列』(如 · 將變數排列成『縱橫』 ...