310 likes | 424 Views
陣列. 本章重點. 陣列宣告 一維陣列值存取 多維陣列值存取 陣列分類排序 數字排序 字母排序 陣列搜尋. 陣列 (Array). 為了能處理大量資料,「陣列 (Array) 」能將同性質的資料以陣列方式存放, 例如,可使用 Customer[ ] 形式來代表全體客戶名稱。 如果程式中有多個資料需要處理時,使用陣列絕對是最佳首選,不但可以省去冗長的變數宣告,而且節省版面設計空間。. 陣列宣告. 利用陣列來處理資料呢?有兩個步驟: 1. 宣告陣列方式:使用 [ ] 符號代表陣列 假如資料型別為整數 int , 陣列變數名稱為 x :
E N D
本章重點 • 陣列宣告 • 一維陣列值存取 • 多維陣列值存取 • 陣列分類排序 • 數字排序 • 字母排序 • 陣列搜尋
陣列 (Array) • 為了能處理大量資料,「陣列(Array)」能將同性質的資料以陣列方式存放, 例如,可使用Customer[ ]形式來代表全體客戶名稱。 • 如果程式中有多個資料需要處理時,使用陣列絕對是最佳首選,不但可以省去冗長的變數宣告,而且節省版面設計空間。
陣列宣告 • 利用陣列來處理資料呢?有兩個步驟: 1. 宣告陣列方式:使用 [ ] 符號代表陣列 假如資料型別為整數int, 陣列變數名稱為x: 有三種表示方式,不管您選擇何種方式宣告陣列,結果皆同。 • 方式1: int[ ] x; • 方式2: int [ ]x; • 方式3: int x[ ];
陣列宣告 2. 設定陣列空間:使用 new來配置空間 當宣告陣列之後,還必須要決定多少個空間給資料使用,亦即資料個數。宣告語法如下: • int x[ ]; • x = new int[資料個數]; • 或者,也可改為 • int x[ ] = new int[資料個數];
陣列宣告 • 至於陣列的個別元素又該如何表示?讓我們利用下列方式來得到答案: • 首先假想有5個空盒子,因為陣列的初始值為0 (注意,並不是從1開始喔!!),所以這5個的個別元素表示法則依次分別為x[0],x[1],x[2],x[3],x[4],代表著第一個的個別元素為x[0],第二個的個別元素為x[1],其他依此類推,如下圖:
一維陣列值存取 • 陣列宣告完成之後,接下來就要將資料值存放到每一個別元素中,而且每一個別元素都代表著個別獨立的資料值,例如,如果將資料值置放到x[0],這個資料值即代表著第一個的個別元素使用,與其他的個別元素就無關聯。
一維陣列值存取 • 以下是一維陣列的資料值表示法: • 也可將以上例子改寫成如下形式:
一維陣列值存取 • 瞭解了上述兩種形式陣列的資料值表示法,再來就是如何利用Java程式將陣列輸出各項資料值,因為陣列的初始值是從0起值,然後根據資料個數來判斷儲存空間,此方式有點類似「已知個數」情況下從初始值遞增至最大值之語法,故可使用「for」迴圈與陣列結合
範例檔: Ch5_1.java • class Ch5_1 • { • public static void main(String args[]) • { • int[] account=new int[5]; • account[0] = 1000; • account[1] = 6500; • account[2] = 4050; • account[3] = 1350; • account[4] = 2790; • for (int i=0; i<5; i++) • { • System.out.println("第 " + (i+1) + " 位客戶活儲帳號餘額有 " + account[i] + "元"); • } • } • }
可將範例Ch5_1.java改為如下程式碼 • class Ch5_2 • { • public static void main(String args[]) • { • int[ ] account = {1000, 6500, 4050, 1350, 2790}; • for (int i=0; i < account.length; i++) • { • System.out.println("第 " + (i+1) + " 位客戶活儲帳號餘額有 " + account[i] + "元"); • } • } • }
多維陣列值存取 • 先前所提的皆屬於一維陣列,如同一排的空盒子排成一列。如果有不同個體元素資料需要輸入,可能會需要好幾列的空間來存放,這就是所謂的「多維陣列」。
二維陣列的宣告方式 • 二維陣列的宣告方式 • 也可將二維陣列宣告方式改為
二維陣列的宣告方式 • 在陣列宣告中,您會看到有二個 [ ] [ ] 的符號,前面代表是列的數目,後者代表是欄的數目,例如,[2][5]表示形式如下所示:
陣列分類排序 • 如果有很多數據資料時,又希望能依照由小而大自動排列時,此時可利用Java的java.util類別的分類(sort)的功能來排序。要使用這個分類(sort)功能必須要匯入相關類別套件,參考語法如下: • import java.util.*;
數字排序 • 假設有五個數字依序分別為44, 55, 22, 11, 33,現在希望能將數字由小而大自動排列,如同11, 22, 33, 44, 55之排序,我們可以利用Arrays.sort( )方法來達到此需求,語法請參考下列之範例
範例檔: Ch5_6.java • import java.util.*; • class Ch5_6 • { • public static void main(String[ ] args) • { • int num[] = {44, 55, 22, 11, 33}; • System.out.println("排序前:"); • for(int i = 0; i < num.length; i++) • { • System.out.println(" " + num[i]); • } • System.out.println("\n排序後:"); • Arrays.sort(num); • for(int i = 0; i < num.length; i++) • { • System.out.println(" " + num[i]); • } • } • }
字母排序 • 除了數字排序外,當然也可以將字母做一排序,例如,現有五個名字分別為Paul, Kevin, Susan, Phil, Tiger,也可以使用Arrays.sort( )方法達到以字母排序的目的,語法請參考下列之範例:
範例檔: Ch5_7.java • import java.util.*; • class Ch5_7 • { • public static void main(String[] args) • { • String name[] = {"Paul", "Kevin", "Susan", "Phil", "Tiger"}; • System.out.println("排序前:"); • for(int i = 0; i < name.length; i++) • { • System.out.println(" " + name[i]); • } • System.out.println("\n排序後:"); • Arrays.sort(name); • for(int i = 0; i < name.length; i++) • { • System.out.println(" " + name[i]); • } • } • }
陣列搜尋 • 陣列還有一個最大的功用,就是能在眾多資料中搜尋特定資料,例如,我們可以輸入某人的姓名來查詢某人的email、電話、地址等等相關資料。
範例檔: Ch5_8.java • import java.io.*; • class Ch5_8 • { • public static void main(String args[]) throws IOException • { • String email[ ][ ]={ {"0","0"}, • {"Paul","paul@yahoo.com.tw"},{"Kevin","k123@yahoo.com.tw"}, • {"Susan","su1987@hotmail.com"},{"Tiger","twoods@aol.com"}, • {"Phil","pp0099@pchome.com.tw"},{"Tim","tim123@yahoo.com.tw"}, • {"Carle","ca55@hotmail.com"},{"Ricky","ry@yam.com"}}; • BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); • System.out.print("請輸入名字: "); • String name=br.readLine(); • for (int i=1;i<=9 ;i++) • { • if (name.compareToIgnoreCase(email[i][0])==0) • { • System.out.println(email[i][0] + " 的email為: " + email[i][1]); • break; • } • else • System.out.println("查無此人的email"); • break; • } • } • }
輸出結果 • 找到某人資料: 找不到資料
課堂練習1:找出最大與最小值 • 此練習題是要從一個陣列中, int num[]={34, 22, 82, 59, 76, 71 }; 找出最大與最小值,參考下面範例程式碼
課堂練習2:綜合陣列練習 • 試求出下列各題: ( a ) 使用陣列方式將上述列印出 ( b ) 求出每一位平均分數及成績排名 ( c ) 求出每一科的平均分數
課堂練習2:綜合陣列練習 • 輸出結果畫面如下所示
課堂練習3:銷售業績比較 • 假設產品A單價為22元,產品B單價為19元,產品C單價 • 為28元,產品D單價為24元,產品E單價為15元,且每一個 • 銷售員分別在每項產品賣出不同的數量,請根據下列的畫面輸出結果,分別求出: • 每一個銷售員的銷售總金額 • 每項產品的銷售總金額 • 找出誰是最佳銷售員 • 那一項產品賣的金額最好