• 沒有找到結果。

05陣列.pdf

N/A
N/A
Protected

Academic year: 2021

Share "05陣列.pdf"

Copied!
32
0
0

加載中.... (立即查看全文)

全文

(1)陣列 王元俊 Wang Yuan-Jiun [email protected] 1.

(2) 學習目標 • • • • • • •. 什麼是陣列? 一維陣列 for-each 迴圈 Variable Arity Methods 二維陣列 不規則陣列 (Jagged Array) 常用的陣列屬性與方法. 2.

(3) 3.

(4) 4.

(5) 陣列簡介 • 陣列是一種具有結構性的資料儲存空間,通常 陣列裡儲存相同性質的資料。 • 陣列中的資料以連續的空間儲存。 • 陣列名稱,也是一個變數,代表整體的資料。 • Java 將陣列視為特殊的物件。 • 範例: int [] ary = new int [5]; 0. 1. 2. 3. 4 (索引). ary (參考變數). (物件) 5.

(6) 宣告一維陣列 (1) 1. 不給陣列初值 方法一,範例 int [] score; score = new int [5]; 方法二,範例 int [] score = new int [5]; 2. 給定陣列初值 方法一,範例 int [] score; score = new int [] {90, 84, 93, 78, 86}; 方法二,範例 int [] score = new int [] {90, 84, 93, 78, 86}; 方法三,範例 int [] score = {90, 84, 93, 78, 86}; 6.

(7) 宣告一維陣列 (2) • 常見錯誤  int [] score = new int [5] {90, 84, 93, 78, 86}; // 給定初值,不能定義陣列維度  int [] score; score = {90, 84, 93, 78, 86}; // score 參考變數必須指向記憶體位址. 7.

(8) 一維陣列範例 • Demo1DArray.java:隨機產生 5 個 1~100 的整 數,將這 5 個整數存放在陣列中,並且印出。. 8.

(9) 一維陣列的應用 • PrimeNumber.java:印出小於 100 的所有質數。. 9.

(10) 10.

(11) 練習 1. 撰寫一個程式,完成以下的要求:  宣告三個一維陣列 A、B 與 C,各有 10 個 元素。  A 陣列元素的值分別是 0、1、2、...、9。  B 陣列元素的值是它的索引的平方,例如 B[2] 為 4。  C[i] = A[i] + B[i], i = 0, 1, 2, ..., 9  印出 C 陣列所有元素值。. 11.

(12) 練習 2. 陣列 fib 有 15 個元素,fib[0] = 0,fib[1] = 1, fib[i] = fib[i-1] + fib[i-2], i = 2, 3, 4, …, 14。 這個陣列存放的數列稱為費氏數列。印出這個 數列的前 15 項。(也就是陣列 fib 的所有元素). 3. 利用字元陣列印出以下的圖形,若輸入 n = 5。 ABCDE BCDEA CDEAB DEABC EABCD 12.

(13) for-each 迴圈 (1) • 讀取陣列中元素時,可應用「for-each 迴圈」。 • 若 nameList 是一個字串陣列: – for 迴圈印出陣列所有內容 for (int i = 0; i < nameList.length; i++) { System.out.println( nameList[i] ); } – for-each 迴圈印出陣列所有內容 for ( String name : nameList ) { System.out.println( name ); } 13.

(14) for-each 迴圈 (2) • for-each 迴圈語法 for ( 資料型態 變數名稱 : 陣列名稱 ) { // 以變數代表陣列中元素的值進行處理 }. • 注意:for-each 迴圈不能更改元素的值 int [] intList = new int [10]; for ( int item : intList ) { // INCORRECT! DOES NOT MODIFY THE ARRAY!. item = 17; }. 14.

(15) Variable Arity Methods • 呼叫一個 variable arity method 時,可以有不同 個數的參數。 • 格式 傳回值型態 方法名稱 (資料型態 … 變數名稱) { … }. • 在方法中,變數視同陣列變數操作。. 15.

(16) DemoArityMethod.java. 16.

(17) 二維陣列 • Java 陣列物件是只能儲存基本資料型態的一維 陣列。二維陣列是透過參考到一維陣列物件來 達成,也就是「一維陣列的陣列」。 • 範例:int [][] x = new int[10][20];. 圖片來源:http://programming.im.ncnu.edu.tw/J_Chapter3.htm. 17.

(18) 宣告二維陣列 (1) 1. 不給陣列初值 方法一,範例 int [][] studentScore; studentScore = new int [2][3]; 方法二,範例 int [][] studentScore = new int [2][3];. 18.

(19) 宣告二維陣列 (2) 2. 給定陣列初值 方法一,範例 int [][] studentScore; studentScore = new int [][] {{97001, 90, 84}, {97002, 93, 78}};. 方法二,範例 int [][] studentScore = new int [][] {{97001, 90, 84}, {97002, 93, 78}};. 方法三,範例 int [][] studentScore = {{97001, 90, 84}, {97002, 93, 78}};. 19.

(20) 二維陣列範例 -- 矩陣相加 • 二維陣列時常做為陣列運算。令矩陣 1 2 3  A  2 3 4  . 0 1 4  B  0 1 8  . 若矩陣 C = A + B,印出 C 所有的元素值。. 20.

(21) MatrixAddition.java. 21.

(22) 練習 4. 矩陣. 1 2 3  A  4 5 6 7 8 9. 若矩陣 B 是 A 的轉置矩陣,也就是 1 4 7  B  2 5 8  3 6 9 .  寫一個程式由矩陣 A 產生矩陣 B。  寫一個函數 printMatrix() 印出矩陣內容。  最後呼叫 printMatrix() 印出矩陣 A 與 B 的 所有元素值。 22.

(23) 不規則陣列 (Jagged Array) • 陣列的每一列元素個數可以不相同。 • 範例 int [][] studentScore = new int [2][]; studentScore [0] = new int [] {97001, 90, 84, 100}; studentScore [1] = new int [] {97002, 93, 78};. 23.

(24) 常用的陣列屬性與方法 (1) 1. length 屬性:一維陣列是陣列元素個數,二維 陣列是列數。 範例: String [] Authors = new String [] {"Mary", "Tom"}; int [][] Nums = new int [][] {{10, 20, 30, 40},{50, 60, 70}};. 屬性值: – Authors.length 為 2 – Nums.length 為 2 – Nums[0].length 為 4 – Nums[1].length 為 3 24.

(25) 常用的陣列屬性與方法 (2) 2. binarySearch():排序陣列元素以二元搜尋法 找尋陣列元素的索引值。 範例: String [] Engineer = {"Andy", "Candy", "Kevin", "Mai"}; int arrayIndex = Arrays.binarySearch(Engineer, "Kevin");. 變數值: – arrayIndex 為 2。 • 需要 import java.util.Arrays; – 在 Java 中提供了 Arrays 類別,讓程式設計 者能方便的操作陣列。 25.

(26) 常用的陣列屬性與方法 (3) 3. equals():比較兩個陣列元素內容值是否全部 相等。 範例: int [] N = new int [] {5, 2, 0}; int [] M = new int [] {5, 2, 0}; 函數值: – Arrays.equals(N, M) 為 true。 • 需要 import java.util.Arrays;. 26.

(27) 常用的陣列屬性與方法 (4) 4. fill():指定陣列元素內容值 範例: int [] Score = new int [] {59, 63, 80, 45, 95}; Arrays.fill(Score, 100); // 將陣列元素內容值都改為100 • 需要 import java.util.Arrays;. 27.

(28) 常用的陣列屬性與方法 (5) 5. sort():排序陣列元素內容 範例: int [] Score = new int [] {59, 63, 80, 45, 95}; Arrays.sort(Score); 執行結果: – 排序後 Score 內容為 [45, 59, 63, 80, 95]。 • 需要 import java.util.Arrays;. 28.

(29) 常用的陣列屬性與方法 (6) 6. copyOf():複製陣列 範例: int [] Score1 = new int [] {59, 63, 80, 45, 95}; int [] Score2 = Arrays.copyOf(Score1, Score1.length); 執行結果: – Score2 內容為 [59, 63, 80, 45, 95]。 • 需要 import java.util.Arrays;. 29.

(30) 常用的陣列屬性與方法 (7) 7. toString():陣列所有元素值的字串 範例: int [] Score1 = new int [] {59, 63, 80, 45, 95}; System.out.println( Arrays.toString(Score1) ); 執行結果: – 輸出結果為 [59, 63, 80, 45, 95] 。 • 需要 import java.util.Arrays;. 30.

(31) DemoArrays.java • 以上「常用的陣列屬性與方法」的範例,參閱 DemoArrays.java。 • 執行結果. 31.

(32) Java 陣列的索引值 • Java 在執行期間會對陣列的索引做檢查,如果 超出來合法範圍,就會產生 ArrayIndexOutOfBoundException 的例外。. 32.

(33)

參考文獻

相關文件

„ FPGA –現場可規劃邏輯陣列 (field- programmable

„ FPGA –現場可規劃邏輯陣列 (field- programmable

„ FPGA –現場可規劃邏輯陣列 (field- programmable

„ FPGA –現場可規劃邏輯陣列 (field- programmable gate

„ FPGA –現場可規劃邏輯陣列 (field- programmable

„ FPGA –現場可規劃邏輯陣列 (field- programmable

若我們能知道有 k 個 row 的矩陣一 定能利用 elementary row operations 化為 echelon form 這個事實且利用這個事實證得有 k + 1 個 row 的矩陣一定能利用 elementary row

sort 函式可將一組資料排序成遞增 (ascending order) 或 遞減順序 (descending order)。. 如果這組資料是一個行或列向量,整組資料會進行排序。