Microsoft PowerPoint - SE7ch05.ppt

Size: px
Start display at page:

Download "Microsoft PowerPoint - SE7ch05.ppt"

Transcription

1 第五章陣列 課前指引陣列是一種非常重要的資料結構, 它可以讓程式設計更精簡 Java 也支援陣列, 但 Java 的陣列與早期程式語言 ( 如 C/C++) 的陣列有些不同 Java 的陣列可透過某些方法或屬性進行更多的應用 本章將針對陣列的原理及應用做深入且詳細的說明 章節大綱 5.1 一般程式語言的陣列概觀 5.2 Java 的陣列 5.4 其他類別對於陣列的可用方法 5.5 本章回顧 5.3 二維陣列 備註 : 可依進度點選小節

2 5.1 一般程式語言的陣列概觀 陣列是一種非常重要的資料結構, 幾乎各種高階程式語言都提供了陣列 什麼是陣列呢? 簡單來說, 陣列是一種儲存大量同性質資料的良好環境由於不必使用不同的變數名稱, 以及陣列元素存取的方便性, 使得大多數的程式設計中, 都看得到陣列的影子 一般程式語言的陣列概觀 陣列 是一群資料型態相同的變數, 並且在記憶體中會以連續空間來加以存放 舉例來說, 假設我們想要記錄每月的營業額, 您當然可以使用 January February December 等 12 個數值變數來儲存這些資料, 但如果您使用的是陣列來儲存的話, 則可以只使用同一個陣列變數名稱即可, 例如 :Month [] 並將 Month[0]~Month[11] 對應於各月之營業額 for(int i=0;i<=11;i++) Sum=Sum+Month[i]; 4

3 5.1 一般程式語言的陣列概觀 在上面的小範例中, 我們可以發現陣列中的每個元件 ( 陣列元素 ) 相當於一個變數, 我們只要透過索引 (index), 就可以直接取得陣列的指定元素 (Java 的陣列索引由 0 開始計算 ) 因此, 使用陣列可以免除大量變數命名的問題, 使得程式具有較高的可讀性 一般程式語言都提供了上述的陣列資料結構, 不過索引起始值則可能有所不同 Java 的陣列 在 Java 中, 陣列以變數名稱來表示, 要使用陣列之前, 首先您必須決定該陣列的元素為何種資料型態, 以及該陣列的名稱 決定這兩種資料之後, 您可以透過下列語法來宣告一個陣列變數 : 宣告陣列名稱 語法 : 資料型態陣列名稱 [ ]; 或資料型態 [ ] 陣列名稱 ; 功能 : 宣告 Java 的一維陣列, 以及陣列元素資料型態 6

4 5.2 Java 的陣列 語法說明 : (1) 資料型態 : 陣列的資料型態可以是原始資料型態, 也可以是某種類別 ( 非原始資料型態 ), 例如 :int,float,,string 等等 (2) 陣列名稱 : 陣列名稱的命名規定與變數命名規定相同, 您應該盡量採用有意義的英文字或組合字來代表該陣列的用途 範例 : 假設我們有學生的成績或學生的學號需要記錄 則可以將陣列宣告為 stuscore 或 stuid, 如下宣告 ( 一維 ) 陣列 : int stuscore[]; String stuid[]; // 可改寫為 int[] stuscore; // 可改寫為 String[] stuid; Java 的陣列 產生陣列實體 當我們有了陣列名稱後, 應該要為該陣列配置陣列元素所需要的記憶體空間, 它可以透過下列語法來實現 : 語法 : 陣列名稱 = new 資料型態 [ 元素個數 ]; 功能 : 為陣列配置實體的記憶體空間 8

5 5.2 Java 的陣列 語法說明 : (1) 資料型態 : 此處的資料型態必須與宣告陣列名稱時的資料型態相同 (2) 元素個數 : 所需要的陣列元素個數, 它必須是一個整數變數或常數 ( 一般為常數 ), 並且不能是 long 型態 例如要記載 12 個月份的營業額, 則此處可宣告為 12 (3) 陣列產生實體後, 就可以透過索引存取陣列元素, 語法如下 語法 : 陣列名稱 [ 索引值 ] 功能 : 存取陣列元素 說明 : 在 Java 中, 陣列第一個元素的索引值為 0, 第二個元素的索引值為 1, 依此類推, 所以長度為 n 的陣列, 其索引值為 0~n Java 的陣列 範例 : 假設學生共有 5 位, 則可以如下宣告 ( 一維 ) 陣列並配置實體 : int stuscore[]; // 可改寫為 int[] stuscore; stuscore = new int[5]; // 配置記憶體空間 stuscore[3] = 84; // 設定陣列第四個元素為 84 String stuid[]; // 可改寫為 String[] stuid; stuid = new String[5];// 請配置五個元素記憶體空間 10

6 5.2 Java 的陣列 宣告陣列名稱並產生陣列實體 上述的語法可以合併, 也就是在宣告敘述時, 一併完成陣列元素的記憶體配置 語法 : 資料型態陣列名稱 [ ] = new 資料型態 [ 元素個數 ]; 或資料型態 [ ] 陣列名稱 = new 資料型態 [ 元素個數 ]; 功能 : 宣告陣列名稱並配置陣列元素的記憶體空間 範例 上述範例可以改寫如下 : int[] stuscore=new int[5]; String[] stuid=new String[5]; Java 的陣列 說明 : 當您完成上述的宣告與記憶體配置之後, 就可以開始存取記憶體元素, 例如 stuscore[3]=84 ( 結果如圖 5-1) 不過, 陣列資料型態若為類別 ( 非原始資料型態 ), 則代表陣列元素為物件名稱, 您仍必須對物件進行實體的配置動作 ( 也就是產生物件實體 ) 圖 5-1 陣列在記憶體中的示意圖 ( 記憶體位址為假設值 ) 12

7 5.2.1 宣告陣列的實際行為 雖然宣告陣列與配置陣列實體的語法很簡單, 但事實上, 它隱含了一些特殊的記憶體配置動作 以 int stuscore[]=new int[5]; 為例, 它事實上可以分解為下列三項動作 : Step1:int stuscore[]: 在記憶體中預留一個足以記錄記憶體位址的空間 Step2:new int[5]: 配置 5 個連續的 int 整數空間以作為陣列之元素存放之處, 並在其後留下部分記憶體, 記錄陣列可用之屬性及相關方法 (Step1 與 Step 2 如下圖所示 ) 宣告陣列的實際行為 Step3: = : 將陣列實體的起始位置填入 Step1 的內容 14

8 5.2.1 宣告陣列的實際行為 說明 : (1) 由於陣列名稱事實上只是記錄陣列實體的初始位址, 因此我們將這樣的記錄方式稱為參考 (reference) 在 Java 中, 許多程式的背後都隱含著參考, 例如物件名稱事實上也是物件實體的參考 (2) 當 Step3 完成後, 我們就可以透過陣列名稱及索引方式取得陣列元素 (3)Java 的陣列與其他早期程式語言 ( 如 C/C++) 的陣列有一個很大的不同之處,Java 的陣列類似物件, 也提供了某些屬性與方法, 例如陣列長度 length clone 方法等 (4) 事實上, 當陣列配置完成後, 會進行陣列元素的初始化動作, 請見下一小節的說明 陣列的初始化 陣列元素如果未指定初始值, 則陣列元素在實體產生時, 會自動作初始化動作其中原始資料型態的陣列元素會被初始化為 0 或 0.0( 整數類或浮點數類 ) '\u0000'( 字元 ) false( 布林 ) 如果陣列元素是物件的參考, 則會被初始化為 null 除自動初始化之外, 我們也可以在宣告或產生陣列實體時, 設定陣列元素的初始內容, 語法如下 : 語法一 : 資料型態陣列名稱 [ ] = new 資料型態 [ ] 元素 1 初始值, 元素 2 初始值, ; 語法二 : 資料型態 [ ] 陣列名稱 = new 資料型態 [ ] 元素 1 初始值, 元素 2 初始值, ; 語法三 : 資料型態陣列名稱 [ ] = 元素 1 初始值, 元素 2 初始值, ; 語法四 : 資料型態 [ ] 陣列名稱 = 元素 1 初始值, 元素 2 初始值, ; 功能 : 初始化陣列元素 16

9 5.2.2 陣列的初始化 語法說明 : (1) 由於在指定初始值時, 編譯器可以確定陣列有幾個陣列元素, 因此不需要設定元素個數值 (2) 語法一及語法二可拆寫為兩行, 如下 : 語法一 : 資料型態陣列名稱 [ ]; 陣列名稱 = new 資料型態 [ ] 元素 1 初始值, 元素 2 初始值, ; 語法二 : 資料型態 [ ] 陣列名稱 ; 陣列名稱 = new 資料型態 [ ] 元素 1 初始值, 元素 2 初始值, ; 陣列的初始化 陣列的初始化範例 : int Ary1[] = new int[]5,3,6,1; int[] Ary2 = new int[]3,2,7,4,9; int Ary3[]; Ary3 = new int[]4,3,2,2; int[] Ary4; Ary4=new int[]3,3,5,2 int Ary1[]=5,3,6,1; int[] Ary2=3,2,7,4,9; // 語法一 // 語法二 // 語法一 // 語法二 // 語法三 // 語法四 18

10 5.2.2 陣列的初始化 如果陣列元素是物件參考時, 則您也可以於陣列實體配置時, 將物件生成直接加入其中, 使得物件參考得以直接指向物件實體位址, 其語法如下 : 語法一 : 資料型態陣列名稱 [ ] = new 資料型態 [ ]new 建構子 ( 引數列 ),new 建構子 ( 引數列 ), ; 語法二 : 資料型態陣列名稱 [ ] = new 建構子 ( 引數列 ),new 建構子 ( 引數列 ), ; 陣列的初始化 語法說明 : 我們省略了之前其他各種變形的語法, 實際上這些語法也可以 其中建構子與物件的類別名稱相同 範例 : String Ary[] = new String[]new String("abc"), new String("Hello"); 說明 : Ary 是一個字串陣列, 陣列元素 Ary[0],Ary[1] 為字串變數 ( 物件參考 ), 由於設定了初始值, 因此, 這兩個字串物件變數將參考到字串實體 "abc" 與 "Hello" 意即 System.out.print(Ary[1]); 敘述會印出 Hello 字串 20

11 5.2.3 陣列的長度 之前提及,Java 的陣列與物件極為類似, 也提供了一些屬性 (Fields) 與方法 (Methods) 其中, 最常被使用的應該是 length 屬性與 clone 方法陣列長度有時候是很有用的, 例如當我們想要計算陣列元素的總和時, 可以透過下列片段程式來完成 int Month[]=new int[]10,20,15,29,40,42,76,98,34,13,17,25; int Sum=0; for(int i=0;i < Month.length;i++) Sum=Sum+Month[i]; 共用陣列與複製陣列 Java 的陣列名稱只是一個參考 如果我們將兩個陣列名稱的 參考對象 都設定為同一個陣列實體, 則兩個陣列將可以 共用 同一個陣列內容 如下範例 : 22

12 5.2.4 共用陣列與複製陣列 int Month[]=new int[]10,20,15,29,40,42,76,98,34,13,17,25; int Trade[]; Trade=Month; // Trade 參考至 Month 參考的陣列實體 Trade[2]=50; System.out.print(Month[2]); 說明 : 上述片段程式會印出 50, 因為兩個陣列變數參考到同一個陣列實體, 右圖是其示意圖 共用陣列與複製陣列 如果 Trade 只是想要和 Month 陣列相同, 但不想因為修改其元素值而影響了 Month 陣列, 則應該先使用 clone 將 Month 陣列的實體內容複製一份, 然後再將 Trade 參考指向複製的陣列實體, 如下範例 : int Month[]=new int[]10,20,15,29,40,42,76,98,34,13,17,25; int Trade[]; Trade=Month.clone(); //clone 會複製一份陣列實體, 並回傳複製的陣列實體之初始位址 Trade[2]=50; System.out.println(Month[2]); System.out.println(Trade[2]); 24

13 5.2.4 共用陣列與複製陣列 說明 : 上述片段程式會印出 15 與 50 兩個值, 因為兩個陣列變數參考到不同的陣列實體, 下面是其示意圖 共用陣列與複製陣列 我們可以將 Month 陣列的實體參考設定給 Trade 陣列變數, 即使 Trade 原本已經指向其他陣列實體, 如下範例 : int Month[]=new int[]10,20,15,29,40,42,76,98,34,13,17,25; int Trade[]=new int[]20,18,87,65; System.out.println(Trade.length); Trade=Month; // Trade 參考至 Month 參考的陣列實體 System.out.println(Trade.length); 說明 : 上述範例會印出 4 與 12 兩個數值, 看似陣列長度被改變了, 但其實陣列實體的長度並沒有改變, 而是因為參考的陣列實體不同所導致 26

14 5.2.4 共用陣列與複製陣列 共用陣列與複製陣列 實用範例 5-1 : 使用陣列存放營業額, 並計算年度營業額與各月平均營業額 範例 5-1:ch5_01.java( 隨書光碟 myjava\ch05\ch5_01.java) /* 檔名 :ch5_01.java 功能 : 陣列元素的存取 */ package myjava.ch05; import java.lang.*; import java.io.console; public class ch5_01 // 主類別 public static void main(string args[]) int sum=0; double average; Console console=system.console(); 共用陣列與複製陣列 int trade[]=new int[4]; // 宣告 trade 陣列並產生陣列實體 for(int i=0;i<trade.length;i++) System.out.print(" 第 " + (i+1) + " 季的營業額 :"); trade[i] = Integer.parseInt(console.readLine()); sum = sum + trade[i]; average=(double)sum/(double)12; System.out.println("========================="); System.out.println(" 年度營業額 :" + sum); System.out.println(" 平均各月營業額 :" + average); 執行結果 : 第 1 季的營業額 :63328 第 2 季的營業額 :58723 第 3 季的營業額 :78321 第 4 季的營業額 :65551 ========================= 年度營業額 : 平均各月營業額 :

15 5.2.4 共用陣列與複製陣列 範例說明 : 使用迴圈將輸入的各季營業額逐一存入 trade 陣列的 trade[i] 元素中, 並且累加營業額總和 最後計算各月平均營業額 氣泡排序法 (Bubble Sort) 補充 搜尋與排序是程式設計的一項基本且重要的問題 所謂 搜尋 (Searching), 指的是在一堆資料中, 尋找您所想要的資料, 例如 : 在英文字典中找尋某一個單字 所謂 排序 (Sorting) 則是將一堆雜亂的資料, 依照某個鍵值 (Key Value) 依序排列, 方便日後的查詢或使用 例如 : 英文字典中每個單字就是已經排序後的結果 從 a~z 30

16 5.2.5 氣泡排序法 (Bubble Sort) 補充 相信讀者都有搜尋與排序資料的經驗, 以搜尋英文字典為例, 您或許有自己的一套方法找到所需要的單字例如 : 查單字 good, 您可能會先翻閱字典的前 1/3, 看看該頁中的單字字首是哪一個英文字母, 然後再略為調整頁數, 直到找到資料為止 而在電子字典中, 您只需要輸入 good, 然後電腦或翻譯機就會自動幫您找到 good 這個單字的相關資訊, 問題是電腦是如何幫您找到這個單字的呢? 這就是研究 搜尋 演算法所關心的議題了 氣泡排序法 (Bubble Sort) 補充 電腦的許多基礎科學是從數學衍生而來 因此, 即使在個人電腦還不普及的年代, 早就有很多專家們對此一問題發展出許多的解決方法 例如 : 排序 問題的解決方法就有很多種, 其難度與效率也各自不同, 您可以在資料結構或演算法的課程中, 學習到這些知識 在這裡, 我們先補充比較簡單的 氣泡排序法 一般我們會將欲排序的資料存放於陣列中, 所以接下來, 我們將介紹的 氣泡排序 演算法的作用目標將是陣列資料結構 32

17 5.2.5 氣泡排序法 (Bubble Sort) 補充 氣泡排序法 是一種非常簡單且容易的排序方法 ( 當然效率表現也僅僅算是普通而已 ), 簡單地來說, 氣泡排序法 是將相鄰兩個資料一一互相比較, 依據比較結果, 決定資料是否需要對調, 由於整個執行過程, 有如氣泡逐漸浮上水面, 因而得名, 其方法及示意圖如下 : 假設我們有 24,7,36,2,65 要做氣泡排序, 最後的排序結果為 2,7,24,36, 氣泡排序法 (Bubble Sort) 補充 演算法 ( 使用非正式但較接近 Java 語法的虛擬碼 ) 輸入 : 未排序的資料 x[0]~x[n-1] 輸出 : 已排序的資料 k n-1; while(k!=0) t 0; for(i=0 ; i<=k-1 ; i++) if(x[i] > x[i+1]) x[i] x[i+1]; t i; endif endfor k t; endwhile //x[i] 與 x[i+1] 互換 34

18 5.2.5 氣泡排序法 (Bubble Sort) 補充 實例說明 : 若陣列的五個元素資料 A[0],A[1],A[2],A[3],A[4] 要由小到大排序, 則以下是詳細步驟 : 第一回合 : 相鄰兩個資料相互比較, 依照下列步驟, 最大值將被放入 A[4] 中 : A[0] 和 A[1] 比較, 若 A[0]>A[1] 則資料互換, 否則資料不交換 A[1] 和 A[2] 比較, 若 A[1]>A[2] 則資料互換, 否則資料不交換 A[2] 和 A[3] 比較, 若 A[2]>A[3] 則資料互換, 否則資料不交換 A[3] 和 A[4] 比較, 若 A[3]>A[4] 則資料互換, 否則資料不交換 很容易可以發現, 經過上面四次比較之後, 最大的資料一定會被放到 A[4] 之中, 如此稱為 第一回合掃描 氣泡排序法 (Bubble Sort) 補充 第二回合 : 由於在第一回合時,A[0]~A[4] 的最大值已經被放到 A[4] 了, 因此在第二次回合掃描時, 只需要仿照第一回合, 將 A[0]~A[3] 中最大的值放到 A[3] 中即可 ( 明顯地, 第二回合掃描只需要比較 3 次 ) 第三回合 : 由於在第一 二回合時,A[0]~A[4] 的最大值及第二大值已經被放到 A[4] A[3] 了, 因此在第三回合掃描時, 只需要仿照第一回合, 將 A[0]~A[2] 中最大的值放到 A[2] 中即可 ( 明顯地, 第三回合掃描只需要比較 2 次 ) 36

19 5.2.5 氣泡排序法 (Bubble Sort) 補充 第四回合 : 由於在第一 二 三回合時,A[0]~A[4] 的最大值 第二大值 第三大值已經被放到 A[4] A[3] A[2] 了, 因此在第四次回合掃描時, 只需要仿照第一回合, 將 A[0]~A[1] 中最大的值放到 A[1] 中即可 ( 明顯地, 第四回合掃描只需要比較 1 次 ) 第五回合 : 最後剩下 A[0], 不必比較就知道 A[0] 中的值是最小的值 ( 第五回合可省略 ) 所以五筆資料使用氣泡排序, 需要經過四個回合的掃描, 一共比較 ( )=10 次 以此類推,N 筆資料做氣泡排序, 需要 (N-1) 次掃描, 共比較 (N-1)+(N-2)+(N-3) = N(N-1)/2 次 另外, 在排序過程中, 若有某一回合的掃描沒有交換任何的資料, 則代表資料已經提早排序完成, 此時可略過後面尚未掃描的回合 因此 N(N-1)/2 次比較是最差的狀況 氣泡排序法 (Bubble Sort) 補充 小試身手 5 1 上述的氣泡排序, 當有 N 筆資料進行排序時, 在最佳狀況下, 需要做幾次比較? 實用範例 5-2 : 使用氣泡排序法, 將樂透的 6 個號碼依據數字大小排序顯示 ( 特別號除外 ) 範例 5-2:ch5_02.java( 隨書光碟 myjava\ch05\ch5_02.java) 38

20 5.2.5 氣泡排序法 (Bubble Sort) 補充 /* 檔名 :ch5_02.java 功能 : 陣列與排序 */ package myjava.ch05; import java.lang.*; public class ch5_02 public static void main(string args[]) int x[]=25,10,39,40,33,12; int spec=11; int k,times,temp; 執行結果 特別號 11 k=x.length-1; //x.length=6, 代表 6 球 while(k!=0) times=0; for(int i=0;i<=k-1;i++) if(x[i]>x[i+1]) temp=x[i]; x[i]=x[i+1]; x[i+1]=temp; // x[i] times=i; k=times; 宣告一維陣列用來儲存樂透開獎號碼, 並設定陣列元素初始值, 即尚未排序的 6 個樂透開獎號碼 x[i+1] 氣泡排序法 (Bubble Sort) 補充 印出排序後的結果 for(int i=0;i<6;i++) System.out.print(x[i]+ "\t"); System.out.println("\n 特別號 \t" + spec); 範例說明 : (1) 第 15~27 行 : 每一次執行 while 迴圈代表每一次回合的掃描 (2) 第 18~25 行 : 每一次執行 for 迴圈代表執行該回合掃描的比較 (3)times 用來控制下一回合掃描的比較次數遞減一次, 並且若這次掃描中沒有任何互換動作發生, 則不需要再掃描, 直接跳出 while 迴圈 (4) 第 28~30 行 : 印出排序後的結果 (5) 您可以在 26~27 行間插入 for(int j=0;j<6;j++) System.out.print(x[j]+ "\t"); 印出每次掃描後的結果 您也可以將陣列初始值改為 5,10,15,20,25,30, 並且插入這些程式碼, 然後看看會掃描幾次 40

21 5.3 二維陣列 陣列若具有兩個索引稱為 二維陣列 具有三個索引稱為 三維陣列, 依此類推 而二維陣列的使用十分廣泛 ( 僅次於一維陣列 ) 您可以將二維陣列以數學之矩陣來加以看待, 也就是二維陣列是由 列 ( Row) 與 行 (Column) 組合而成 每一個元素恰恰落在特定之某一列的某一行 首先, 我們先來釐清所謂的列與行的差別所謂 列, 指的是 橫列 而 行 指的是 直行 老師的叮嚀 若您對於列與行容易產生混淆的話, 可以利用一些小技巧來加以記憶 通常我們稱一列火車, 因此, 列 為橫列而國小的國語作業, 老師們不是都安排寫某個生字幾行嗎? 而國語作業簿是以直行來加以計算, 因此, 行 為直行 不過請注意, 第幾行程式的 行 指的是英文的 line; 而陣列第幾行的 行 則指的是英文的 Column, 兩者的意義是不同的 二維陣列 列 也就是二維陣列的第一維索引, 而 行 則是二維陣列的第二維索引 我們可以用二維陣列來表示複雜的資料倘若使用橫列來表示各分公司的營運狀況, 直行表示各季的營業額, 則可以如圖安排整間公司的總體營運狀況 第一季 第二季 第三季 第四季 台北總公司 ( 第 1 列 ) trade[0][0] trade[0][1] trade[0][2] trade[0][3] 新竹園區 ( 第 2 列 ) trade[1][0] trade[1][1] trade[1][2] trade[1][3] 高雄分公司 ( 第 3 列 ) trade[2][0] trade[2][1] trade[2][2] trade[2][3] 42

22 5.3 二維陣列 在上面的營運業績範例,trade [3][4] 陣列共有 3 列 4 行, 包含 (3*4)=12 個元素若要取得高雄分公司第 3 季的營業額, 則應該以相對應的索引值來加以取得, 也就是 trade [2][2] ( 在 Java 中, 二維陣列的行列索引起始值仍是由 0 開始計算 ) 二維陣列可以使用表格或矩陣來加以示意, 三維陣列則需要使用三度空間圖形加以示意, 更多維度的陣列則無法使用幾何圖形來示意, 但存取方法也大同小異 建議讀者, 盡量使用 1~3 維陣列來儲存資料以上是一般程式語言對於二維陣列的支援, 但 Java 的二維陣列則並非如此單純甚至可以說 Java 並未直接提供二維陣列 Java 的二維陣列 Java 並沒有直接提供二維陣列, 對 Java 而言, 二維陣列是由兩層的一維陣列所構成, 意即每一個 列的陣列元素 存放的都是 代表一整行的一維陣列, 而陣列的陣列就可以構成二維陣列的效果 因此, 對於二維陣列的 length 屬性而言, 它只是記錄了有幾列而已, 而非二維陣列總共有幾個陣列元素 例如上述的 trade 二維陣列的示意圖如下 : 圖 5-3 Java 的二維陣列事實上是由兩層的一維陣列所構成 44

23 5.3.1 Java 的二維陣列 對於陣列 trade 而言 它的陣列長度 length 為 3, 包含三個陣列元素 ( 因為它有 3 列 ), 並且每個陣列元素也是一個一維陣列 對於陣列 trade[0] 或 trade[1] 或 trade[2] 而言, 它的陣列長度 length 為 4, 包含了四個陣列元素 ( 因為每一列有 4 行 ) 故一共有 12 個陣列元素 雖然 Java 的二維陣列是由兩層的一維陣列所組成, 但 Java 仍提供了快速宣告以及快速存取的語法以減少程式設計師撰寫程式的麻煩 二維陣列的簡易宣告語法 在 Java 中, 宣告二維陣列可以如同其他程式語言般的簡單, 其語法如下 : 宣告二維陣列名稱 語法 : 資料型態陣列名稱 [ ][ ]; 或資料型態 [ ][ ] 陣列名稱 ; 功能 : 宣告 Java 的二維陣列, 並指定第二維陣列元素的資料型態 說明 : 以上述的 trade 營業額範例來說, 假設營業額為整數, 則可以宣告陣列名稱如下 : int trade[][]; 或 int[][] trade; 46

24 5.3.2 二維陣列的簡易宣告語法 宣告陣列名稱並產生陣列實體如果您想要在宣告陣列名稱時, 同時配置陣列的實體, 則可使用如下語法 : 語法 : 資料型態陣列名稱 [][] = new 資料型態 [ 第一維元素個數 ][ 第二維元素個數 ]; 或資料型態 [][] 陣列名稱 = new 資料型態 [ 第一維元素個數 ][ 第二維元素個數 ]; 功能 : 宣告二維陣列名稱並配置陣列元素的記憶體空間 範例 : 以上述的 trade 營業額範例來說, 則可於宣告陣列名稱的同時, 配置陣列實體 : int trade[][] = new int[3][4]; 或 int[][] trade = new int[3][4]; 二維陣列的簡易宣告語法 說明 : 由於上述語法中, 並未設定 trade 元素的初始值, 因此會被自動初始化為 0, 故上述語法實際在記憶體中的配置如下圖 : 圖 5-4 Java 的二維陣列 ( 記憶體位址為假想值 ) 48

25 5.3.2 二維陣列的簡易宣告語法 實用範例 5-3 : 將九九乘法表的乘法結果儲存在 9 9 的二維整數陣列之中, 並將陣列的資料列印出來 範例 5-3:ch5_03.java( 隨書光碟 myjava\ch05\ch5_03.java) /* 檔名 :ch5_03.java 功能 : 二維陣列的練習 */ package myjava.ch05; import java.lang.*; public class ch5_03 // 主類別 public static void main(string args[]) // 宣告二維陣列 m[9][9], 共有 81 個元素, 從 m[0][0]~m[8][8] int m[][]=new int[9][9]; for(int i=1;i<=9;i++) for(int j=1;j<=9;j++) m[i-1][j-1]=i*j; // 將九九乘法的結果存入二維陣列中 二維陣列的簡易宣告語法 for(int i=1;i<=9;i++) for(int j=1;j<=9;j++) System.out.print(i + "*" + j + "=" + m[i-1][j-1] + "\t"); System.out.println(); 執行結果 :( 同範例 4-17) 範例說明 : 第 17~22 行是用來取出二維陣列的各個元素值 ( 內存放九九乘法表之結果 ),m[i-1][j-1] 放在雙層迴圈內, 恰好可取出 m[0][0]~m[8][8] 的元素值 迴圈與陣列常常搭配使用, 以精簡程式碼 50

26 5.3.2 二維陣列的簡易宣告語法 宣告二維陣列並設定初始值 在宣告二維陣列的同時, 也可以指定陣列元素的初始值 ( 和一維陣列類似 ), 語法如下 : 語法 : 資料型態陣列名稱 [ ][ ]= 第一列元素的初始值, 第二列元素的初始值, : : 最後一列元素的初始值 ; 功能 : 宣告二維陣列並設定陣列元素的初始值 語法說明 : (1) = 前面的 資料型態陣列名稱 [][] 可改寫為 資料型態 [][] 陣列名稱 二維陣列的簡易宣告語法 語法說明 : (2) 每一列可能包含眾多元素, 其中以, 加以區隔 如下範例 : int score[][]=85,78,65, 75,85,69, 63,67,95, 94,92,88, 74,65,73 ; //score 是一個 5 3 的二維陣列, 其中 score[3][1] 的元素值為 92 52

27 5.3.2 二維陣列的簡易宣告語法 語法說明 : (3) 在語法中, 我們可以發現到, 它並未要求每一列的元素個數必須相同, 例如下列範例可以設定一個 列長度不同 的二維陣列, 這是因為 Java 的二維陣列事實上是由兩層的一維陣列所構成 int score[ ][ ]=85,78,65, 75, 63,95, 94,92,88; /* score 是一個二維陣列, 其中第 0 列有 3 個元素, 第 1 列有 1 個元素, 第 2 列有 2 個元素, 第 3 列有 3 個元素 */ 二維陣列的簡易宣告語法 觀念範例 5-4 : 使用二維陣列存放學生的期中考成績 範例 5-4:ch5_04.java( 隨書光碟 myjava\ch05\ch5_04.java) /* 檔名 :ch5_04.java 功能 : 二維陣列的練習 */ package myjava.ch05; import java.lang.*; public class ch5_04 // 主類別 public static void main(string args[]) double score[][] = 85,78,65,0, 75,85,69,0, 63,67,95,0, 94,92,88,0, 74,65,73,0; System.out.println(" 計概 \t 數學 \t 英文 \t 平均 "); System.out.println("=============================="); 54

28 5.3.2 二維陣列的簡易宣告語法 for(int i=0;i<5;i++) score[i][3] = (score[i][0]+score[i][1]+score[i][2])/3; for(int j=0;j<4;j++) System.out.print(score[i][j] + "\t"); System.out.println(); 執行結果 : 計概 數學 英文 平均 ============================== 二維陣列的簡易宣告語法 範例說明 : 陣列中每一列代表一個學生的成績, 所以共有 5 位學生的成績 每一列的第 4 個元素 ( 即 score[i][3]) 是用來存放該列的平均分數 56

29 5.3.3 二維陣列的分段宣告 在上一小節中, 我們透過設定初值方式, 完成了一個列長度不同的二維陣列宣告, 如果不想手動設定初值, 是否也可以完成列長度不同的二維陣列呢? 答案是可以的, 但必須將 宣告陣列名稱 與 產生陣列實體 分段完成, 並且這個方法也可以應用於列長度相等的二維陣列宣告 要進行二維陣列的分段宣告首先必須先宣告二維陣列名稱, 其如同前面的語法, 接著在產生陣列實體時, 我們只先產生列的實體 ( 先不產生行陣列元素的實體 ), 如下語法 : 語法 : 資料型態陣列名稱 [ ][ ]; // 或資料型態 [ ][ ] 陣列名稱 ; 陣列名稱 = new 資料型態 [ 第一維元素個數 ][ ]; 功能 : 宣告 Java 的二維陣列, 並產生第一維的實體 二維陣列的分段宣告 說明 : 兩行可合併為如下語法 : 語法 : 資料型態陣列名稱 [ ][ ]= new 資料型態 [ 第一維元素個數 ][ ]; 舉例來說, 假設我們想要宣告的是具有 3 列的 trade 二維整數陣列, 則可如下宣告 : int trade[][]; trade = new int[3][]; 兩行可合併如下 : int trade[][] = new int[3][]; 58

30 5.3.3 二維陣列的分段宣告 有了第一維的實體之後, 我們可以為每一個列產生第二維的實體, 假設每一列的元數個數相同, 則可套用如下語法 : 語法 :for(int i=0;i< 陣列名稱.length.i++) 陣列名稱 [i] = new 資料型態 [ 第二維元素個數 ]; 功能 : 產生二維陣列第二維的實體 二維陣列的分段宣告 舉例來說, 假設我們想要宣告的是 3 4 的 trade 二維整數陣列, 則可如下宣告 : int trade[][]; trade = new int[3][]; for(int i=0;i<trade.length;i++) trade[i]=new int[4]; 說明 : 迴圈中, 使用了 trade.length 作為迴圈執行次數, 此處的 length 是代表列的數量, 故為 3, 因此迴圈內的敘述實際上如下, 經由這樣的宣告後, 我們就可以正常透過列與行的索引來存取陣列元素了 trade[0]=new int[4]; trade[1]=new int[4]; trade[2]=new int[4]; 60

31 5.3.3 二維陣列的分段宣告 仔細觀察上述範例, 我們可以發現, 如果不要使用迴圈, 而是分別對於每一列進行第二維的實體宣告, 則可以達成不同列長度的二維陣列宣告, 如下範例 : int trade[][] = new int[3][]; // 二維陣列有 3 列 trade[0]=new int[4]; // 第 0 列有 4 個元素 trade[1]=new int[2]; // 第 1 列有 2 個元素 trade[2]=new int[3]; // 第 2 列有 3 個元素 Coding 偷撇步 由於 Java 是以兩層一維陣列方式實現二維陣列, 因此在分段宣告時較為複雜, 這樣的方式到了三維以上的陣列時, 將更複雜 因此, 建議盡量少用三維以上的陣列, 或三維以上陣列盡量採用簡易的宣告方式 複製部分陣列 陣列本身擁有 clone 方法可進行陣列實體的複製, 即使是多維陣列, 也可以透過 clone 方法複製整個陣列的實體, 其語法是 陣列名稱.clone() 而如果我們只想要複製多維陣列中的某一維陣列, 也是可以透過 clone 方法完成的, 因為, 每一維都有一個陣列參考可執行 clone 方法 請見以下的範例 觀念範例 5-5 : 使用 clone 複製部分陣列 範例 5-5:ch5_05.java( 隨書光碟 myjava\ch05\ch5_05.java) 62

32 5.3.4 複製部分陣列 /* 檔名 :ch5_05.java 功能 : 複製部分陣列 */ package myjava.ch05; import java.lang.*; public class ch5_05 // 主類別 public static void main(string args[]) int score[][]=85,78,65, 75, 63,95, 94,92,88; int ary[]; ary=score[3].clone(); for(int i=0;i<ary.length;i++) System.out.print(ary[i] + "\t"); 執行結果 範例說明 : 第 15 行是將 score[3] 的一維陣列複製給 ary, 由於陣列的某一維長度可能不一, 故通常配合 length 存取陣列元素, 否則可能因為存取到不存在的陣列元素 ( 例如 ary[5]) 而出現執行時期的錯誤 其他類別對於陣列的可用方法 對於 Java 而言, 除了原始資料型態 String 類別之外最常見的資料結構大概可說是 陣列, 因此,Java 的許多類別都提供了某些 static 方法可以對陣列進行操作 在本節中, 我們以兩個範例來說明之後讀者若在 Java 的說明文件中, 看到參數為陣列型態, 都可以按照其說明進行應用 64

33 5.4.1 複製陣列部分元素 : System.arraycopy() arraycopy 是 System 類別的一個 static 方法 它可以複製陣列的某段元素值, 設定給另一個陣列的某段元素 ( 起始索引不需要相同 ), 其方法的宣告原型如下 : 語法 :public static void arraycopy(object src, int srcpos, Object dest, int destpos, int length) 所屬類別 :java.lang.system 功能 : 複製陣列部分元素 複製陣列部分元素 : System.arraycopy() 說明 : (1) 共有五個參數, 使用於陣列元素複製時,src 代表來源陣列,dest 代表目標陣列 srcpos 代表來源陣列複製起始索引,destPos 代表目標陣列複製起始索引, length 代表要複製幾個元素 (2) 來源陣列與目標陣列的資料型態必須相容, 如果是原始資料型態, 則必須完全一樣, 因為該 method 並不會幫您作自動轉型的動作 實用範例 5-6 : 使用 System.arraycopy() 複製字元陣列的某些字元 範例 5-6:ch5_06.java( 隨書光碟 myjava\ch05\ch5_06.java) 66

34 5.4.1 複製陣列部分元素 : System.arraycopy() /* 檔名 :ch5_06.java 功能 : 複製部分陣列 */ package myjava.ch05; import java.lang.*; public class ch5_06 // 主類別 執行結果 Hello Java! public static void main(string args[]) char[] ary1='t','h','e','j','a','v','a','2'; char[] ary2='h','e','l','l','o',' ','T','i','m','e','!'; System.arraycopy(ary1,3,ary2,6,4); for(int i=0;i<ary2.length;i++) System.out.print(ary2[i]); 複製陣列部分元素 : System.arraycopy() 範例說明 : 第 13 行將會複製 ary1[3]~ary1[3+4-1] 到 ary2[6]~ary2[6+4-1], 而原本 ary2[6] ~ ary2[6+4-1] 的資料將被覆蓋, 其餘則不變 示意圖如下 : 68

35 5.4.2 對陣列排序 :Arrays.sort() Arrays 類別的 sort 是一個 static 方法 它可以對傳入的陣列進行排序, 由於陣列傳入是採傳參考值方式進行引數傳遞 ( 詳見下一章 ), 因此當我們透過該方法進行排序後, 陣列內容就是已經排序的結果, 其方法的宣告原型如下 : 語法 :static void sort(int[] a) 所屬類別 :java.util.arrays 功能 : 對整數陣列排序 對陣列排序 :Arrays.sort() 說明 : (1) 事實上, 這個 method 已經透過多載技術宣告了多種資料型態的參數, 因此即使您傳入的是其他資料型態 ( 例如 double) 的陣列, 它仍可以運作 註 : 6.10 節會深入說明多載技術宣告 (2) 同樣地, 這個 method 也透過多載技術, 使得我們可以指定陣列的排序範圍 詳見 Java 的類別說明文件 (3) 通常, 由程式語言或 IDE 提供的排序法都是效率較佳的排序法, 例如快速排序法 (quick sort) 實用範例 5-7 : 使用 Arrays sort() 改寫範例 5-2 範例 5-7:ch5_07.java( 隨書光碟 myjava\ch05\ch5_07.java) 70

36 5.4.2 對陣列排序 :Arrays.sort() /* 檔名 :ch5_07.java 功能 : 對陣列排序 */ package myjava.ch05; import java.lang.*; import java.util.arrays; public class ch5_07 // 主類別 public static void main(string args[]) int x[]=25,10,39,40,33,12; int spec=11; 引入 Arrays 類別 Arrays.sort(x); for(int i=0;i<6;i++) System.out.print(x[i]+ "\t"); System.out.println("\n 特別號 \t" + spec); 對陣列排序 :Arrays.sort() 執行結果 : 特別號 11 範例說明 : 第 14 行會對 x 陣列進行排序, 我們在範例 5-2 使用的氣泡排序法效率不佳, 但本範例使用 Java 提供的排序不但效率更佳, 且不需要撰寫排序細節, 這種做法有助於發展大型程式 我們期望藉由這類範例, 讓讀者慢慢建立發展大型程式時的觀念 72

37 5.5 本章回顧 陣列 是一種非常重要的資料結構, Java 也支援 陣列 資料結構 並且 Java 的陣列索引值由 0 開始計算 我們在本章中學習到與陣列有關的知識如下 : (1) 使用陣列可以免除大量變數命名的問題, 使得程式具有較高的可讀性 (2) 陣列將會佔用連續的記憶體空間 (3) 陣列可以分為一維陣列 二維陣列 等等 而 Java 的二維陣列是由多個一維陣列所組成 (4) 陣列必須經由宣告名稱, 然後產生陣列實體, 最後即可透過索引存取陣列元素 本章回顧 (5)Java 的陣列名稱事實上是一個參考, 存放著陣列實體的位址 (6) 我們在宣告陣列的同時, 也可以指定陣列元素的初始值 (7)Java 的陣列提供了一些屬性與方法, 例如 length 屬性與 clone 方法 搜尋 與 排序 是程式設計的一項基本且重要的問題 所謂 搜尋, 指的是在一堆資料中, 尋找您所想要的資料 所謂 排序 則是將一堆雜亂的資料, 依照某個鍵值依序排列, 方便日後的查詢或使用 在本章中, 我們補充介紹了 氣泡排序法 74

38 5.5 本章回顧 在本章的最後, 我們介紹了一些陣列可以使用的方法 ( 隸屬於不同類別 ), 包含 System.arraycopy() 可用以複製陣列部份元素,Arrays.sort() 可以對陣列元素進行排序等 這些方法都是 static 方法, 不須產生物件實體, 並且把陣列當作是其中的引數傳入即可使用 由此可知, 在 Java 中, 我們不需要自行開發排序方法,Java 本身已經提供了效率優良的排序方法可供使用 75 本章結束 Q&A 討論時間 76

Microsoft Word - 投影片ch06

Microsoft Word - 投影片ch06 Java2 JDK5.0 教學手冊第三版洪維恩編著博碩文化出版書號 pg20210 第六章陣列 本章學習目標認識陣列與一般資料型態的不同認識一維與二維陣列學習陣列的應用 陣列 6-2 6.1 一維陣列 一維陣列 (1-dimensional array) 可以存放多個相同資料型態的資料 6.1.1 一維陣列的宣告與記憶體的配置 要使用陣列必須經過兩個步驟 :(1) 宣告陣列 (2) 配置記憶體給該陣列

More information

第1章

第1章 第 8 章 函式 1 本章提要 8.1 前言 8.2 如何定義函式 8.3 函式的呼叫和返回 8.4 傳遞陣列 8.5 方法多載 8.6 遞迴 8.7 綜合練習 8.8 後記 2 8.1 前言 每一種高階程式語言都有提供函式 (Function)( 或稱函數 ) 的功能, 以便將經常使用到的程式功能包裝成函式的形式, 如此一來便能反覆地呼叫該函式來完成某件特定工作在高階程式語言中, 副程式 (Subroutine)

More information

0 0 = 1 0 = 0 1 = = 1 1 = 0 0 = 1

0 0 = 1 0 = 0 1 = = 1 1 = 0 0 = 1 0 0 = 1 0 = 0 1 = 0 1 1 = 1 1 = 0 0 = 1 : = {0, 1} : 3 (,, ) = + (,, ) = + + (, ) = + (,,, ) = ( + )( + ) + ( + )( + ) + = + = = + + = + = ( + ) + = + ( + ) () = () ( + ) = + + = ( + )( + ) + = = + 0

More information

2. 參考網站 C 語言考古題 & C 的解題 程式設計學習入門 ( 網址 : c.blogspot.com/) 網站 : 星子 ACM 小窩 ( 網址 : 網站 :ACM Onli

2. 參考網站 C 語言考古題 & C 的解題 程式設計學習入門 ( 網址 :  c.blogspot.com/) 網站 : 星子 ACM 小窩 ( 網址 :  網站 :ACM Onli 壹 課程說明 單元名稱 單元摘要 C 語言 : 進階資料型態 1. 認識陣列 (Array) 2. 認識結構 (Structure) 3. 認識指標 (Pointer) 設計者劉洲溶教師 ( 國立台中二中 ) 1. 了解陣列的含意及學習陣列宣告語法及程式設計方法 2. 了解結構的意義及學習結構宣告語法及程式設計方法 學習目標 3. 了解指標的含意及學習指標宣告語法及程式設計方法 4. 培養學生進階程式設計能力

More information

Microsoft Word - Prog1-981.docx

Microsoft Word - Prog1-981.docx 5. 變數參照 (Memory Reference) 5.1 指標 (Pointer) (1). 指標 (Pointer) 的基本觀念 特性 內含為一 Memory Address 會因不同的機器而有不同的結果 &" 也是代表變數的位址 例如 : int var1 = 2; cout

More information

CHAPTER VC#

CHAPTER VC# 1. 2. 3. 4. CHAPTER 2-1 2-2 2-3 2-4 VC# 2-5 2-6 2-7 2-8 Visual C# 2008 2-1 Visual C# 0~100 (-32768~+32767) 2 4 VC# (Overflow) 2-1 2-2 2-1 2-1.1 2-1 1 10 10!(1 10) 2-3 Visual C# 2008 10! 32767 short( )

More information

Microsoft PowerPoint - 12 struct and other datatypes.ppt

Microsoft PowerPoint - 12 struct and other datatypes.ppt 第十一章結構與其它資料型態 結構與巢狀結構 結構陣列的各種使用方法 列舉型態 自定的型態別名 typedef 認識結構 使用者自定的資料型態 結構可將型態不同的資料合併成為新的型態 定義結構與宣告結構變數的格式如下 : struct 結構名稱 資料型態成員名稱 1; 資料型態成員名稱 2;... 資料型態成員名稱 n; struct 結構名稱變數 1, 變數 2,, 變數 n; 定義結構與宣告結構變數的語法

More information

untitled

untitled 1 Outline 料 類 說 Tang, Shih-Hsuan 2006/07/26 ~ 2006/09/02 六 PM 7:00 ~ 9:30 聯 ives.net@gmail.com www.csie.ntu.edu.tw/~r93057/aspnet134 度 C# 力 度 C# Web SQL 料 DataGrid DataList 參 ASP.NET 1.0 C# 例 ASP.NET 立

More information

untitled

untitled 1 Outline ArrayList 類 列類 串類 類 類 例 理 MSDN Library MSDN Library 量 例 參 列 [ 說 ] [] [ 索 ] [] 來 MSDN Library 了 類 類 利 F1 http://msdn.microsoft.com/library/ http://msdn.microsoft.com/library/cht/ Object object

More information

untitled

untitled 1 Outline 類别 欄 (1) 類 類 狀 更 易 類 理 若 類 利 來 利 using 來 namespace 類 ; (2) namespace IBM class Notebook namespace Compaq class Notebook 類别 類 來 類 列 欄 (field) (property) (method) (event) 類 例 立 來 車 類 類 立 車 欄 料

More information

Microsoft PowerPoint - java2012-ch12投影片.ppt

Microsoft PowerPoint - java2012-ch12投影片.ppt 第十二章大型程式的發展與常用的類別庫 學習如何分割檔案認識類別庫以及取用類別庫裡的類別建構 package 的階層關係學習 Java 裡常用的類別庫 1 分割檔案的實作 (1/2) 12.1 檔案的分割 以 CCircle 類別為例, 說明分割檔案的實作 1. 依序建立兩個類別檔案, 並置於同一個資料夾內 : 2 分割檔案的實作 (2/2) 12.1 檔案的分割 2. 分別以下列的指令編譯 CCircle.java

More information

Microsoft PowerPoint - C-Ch10.ppt

Microsoft PowerPoint - C-Ch10.ppt 了解陣列元素的位址 陣列 指標的應用 10-1 陣列與指標的關係 可以使用位址運算子 (&) 來查詢陣列中各個元素的位址 &test[0] 這行表示陣列最前面元素的位址 &test[1] 這行表示陣列第二個元素的位址 關於陣列名稱的機制 陣列名稱可以表示陣列最前面元素的位址 #include int main(void) int test[5] = 80,60,55,22,75;

More information

untitled

untitled 1 MSDN Library MSDN Library 量 例 參 列 [ 說 ] [] [ 索 ] [] 來 MSDN Library 了 類 類 利 F1 http://msdn.microsoft.com/library/ http://msdn.microsoft.com/library/cht/ Object object 參 類 都 object 參 object Boxing 參 boxing

More information

新・解きながら学ぶJava

新・解きながら学ぶJava 481! 41, 74!= 40, 270 " 4 % 23, 25 %% 121 %c 425 %d 121 %o 121 %x 121 & 199 && 48 ' 81, 425 ( ) 14, 17 ( ) 128 ( ) 183 * 23 */ 3, 390 ++ 79 ++ 80 += 93 + 22 + 23 + 279 + 14 + 124 + 7, 148, 16 -- 79 --

More information

untitled

untitled 說 參 例 邏 邏 1. 說 2. 數 數 3. 8 4. 理念 李 龍老 立 1. 理 料 2. 理 料 3. 數 料 4. 流 邏 念 5. 良 6. 讀 行 行 7. 行 例 來 邏 1. 說 說 識 量 2. 說 理 類 3. 數 數 念 4. 令 5. 良 6. 流 邏 念 7. 說 邏 理 力 1. 2. 3. 4. 5. 列 念 1 參 1. ( Visual Basic 例 ) (1)

More information

Microsoft Word - JAVA Programming Language Homework I ans

Microsoft Word - JAVA Programming Language Homework I ans JAVA Programming Language Homework I - OO concept Student ID: Name: 1. Which of the following techniques can be used to prevent the instantiation of a class by any code outside of the class? A. Declare

More information

Microsoft PowerPoint - C-Ch11.ppt

Microsoft PowerPoint - C-Ch11.ppt 各式各樣的資料型態 11-1 結構的基礎知識 決定新的型態 關於結構 結構資料型態可以將不同資料型態的值整合成新的型態 結構型態的宣告語法 : struct 結構型態 { 資料型態識別字 ; 資料型態識別字 ; }; 加上 struct 進行宣告 宣告結構變數 語法 : 結構型態結構變數名稱 ; 範例 : struct Car car1; 對成員進行存取 使用結構型態的成員時, 必須使用成員選擇運算子

More information

主程式 : public class Main3Activity extends AppCompatActivity { ListView listview; // 先整理資料來源,listitem.xml 需要傳入三種資料 : 圖片 狗狗名字 狗狗生日 // 狗狗圖片 int[] pic =new

主程式 : public class Main3Activity extends AppCompatActivity { ListView listview; // 先整理資料來源,listitem.xml 需要傳入三種資料 : 圖片 狗狗名字 狗狗生日 // 狗狗圖片 int[] pic =new ListView 自訂排版 主程式 : public class Main3Activity extends AppCompatActivity { ListView listview; // 先整理資料來源,listitem.xml 需要傳入三種資料 : 圖片 狗狗名字 狗狗生日 // 狗狗圖片 int[] pic =new int[]{r.drawable.dog1, R.drawable.dog2,

More information

Microsoft Word - ACL chapter02-5ed.docx

Microsoft Word - ACL chapter02-5ed.docx 第 2 章神奇的質數 2.1.1 什麼是質數 1 1 1 打下好基礎 - 程式設計必修的數學思維與邏輯訓練 1 1 0 10 2 3 5 7 4 6 8 9 10 4 10000 1229 1000 168 2 3 5 7 11 13 17 19 23 29 31 37 41 43 47 53 59 61 67 71 73 79 83 89 97 101 103 107 109 113 127 131

More information

Microsoft Word - CS-981.doc

Microsoft Word - CS-981.doc 4. 資料表示法 4.1 十進位與數字系統 (1). 基本觀念 數字系統的觀念 人們習慣以十進位的計量方式來計算 不同的數字系統有二進位 (Binary) 八進位 (Octal) 十進位 (Decimal) 十六進位(Hexadecimal) 二進位 電腦內部用來表達訊號的資料只有兩種符號 : 0 表示沒電,1 表示有電透過多個電路的組合表示出無數符號, 電腦便利用這些符號來表示不同的數字 利用兩條電線可以表示出

More information

Microsoft PowerPoint - EmbSys101_Java Basics.ppt [相容模式]

Microsoft PowerPoint - EmbSys101_Java Basics.ppt [相容模式] Java Basics Hi Hsiao-Lung Chan, Ph.D. Dept Electrical Engineering Chang Gung University, Taiwan chanhl@maili.cgu.edu.twcgu 執行環境 - eclipse 點選 eclipse 軟體執行檔 設定工作路徑 eclipse 開啟 2 建置 Java 專案 File New project

More information

エスポラージュ株式会社 住所 : 東京都江東区大島 東急ドエルアルス大島 HP: ******************* * 关于 Java 测试试题 ******

エスポラージュ株式会社 住所 : 東京都江東区大島 東急ドエルアルス大島 HP:  ******************* * 关于 Java 测试试题 ****** ******************* * 关于 Java 测试试题 ******************* 問 1 运行下面的程序, 选出一个正确的运行结果 public class Sample { public static void main(string[] args) { int[] test = { 1, 2, 3, 4, 5 ; for(int i = 1 ; i System.out.print(test[i]);

More information

第1章

第1章 第 7 章 字串 1 本章提要 7.1 前言 7.2 類別與物件 7.3 String 類別 7.4 StringBuffer 類別 7.5 綜合練習 7.6 後記 2 7.1 前言 Java 用 String 類別 (Class) 來處理字串, String 類別是 Java 類別庫內建的類別, 它是一堆已經寫好的程式, 我們可以直接拿來使用字串很像字元型別的一維陣列, 字串裡能存放的資料都屬於字元性質,

More information

Microsoft Word - CPMidTerm2010SpringSolution

Microsoft Word - CPMidTerm2010SpringSolution 通識計算機程式設計期中考參考解答, 4/23/2010 1. (a) 宣告 double 變數 z, bool 變數 b, int 變數 i (3%) 答 : double z; bool b; (b) 在螢幕顯示一行字, 要求使用者輸入一個浮點數. (3%) 答 : Console.WriteLine(" 輸入一個浮點數 "); (c) 自鍵盤讀入一個浮點數., 並將其值存入已宣告之 double

More information

内 容 简 介 本 书 是 一 本 关 于 语 言 程 序 设 计 的 教 材, 涵 盖 了 语 言 的 基 本 语 法 和 编 程 技 术, 其 中 包 含 了 作 者 对 语 言 多 年 开 发 经 验 的 总 结, 目 的 是 让 初 学 的 读 者 感 受 到 语 言 的 魅 力, 并 掌

内 容 简 介 本 书 是 一 本 关 于 语 言 程 序 设 计 的 教 材, 涵 盖 了 语 言 的 基 本 语 法 和 编 程 技 术, 其 中 包 含 了 作 者 对 语 言 多 年 开 发 经 验 的 总 结, 目 的 是 让 初 学 的 读 者 感 受 到 语 言 的 魅 力, 并 掌 语 言 程 序 设 计 郑 莉 胡 家 威 编 著 清 华 大 学 逸 夫 图 书 馆 北 京 内 容 简 介 本 书 是 一 本 关 于 语 言 程 序 设 计 的 教 材, 涵 盖 了 语 言 的 基 本 语 法 和 编 程 技 术, 其 中 包 含 了 作 者 对 语 言 多 年 开 发 经 验 的 总 结, 目 的 是 让 初 学 的 读 者 感 受 到 语 言 的 魅 力, 并 掌 握 语

More information

Microsoft Word - 第3章.doc

Microsoft Word - 第3章.doc Java C++ Pascal C# C# if if if for while do while foreach while do while C# 3.1.1 ; 3-1 ischeck Test() While ischeck while static bool ischeck = true; public static void Test() while (ischeck) ; ischeck

More information

4. 如下的程式碼中, 宣告了類別 A3 和 B3 由於在兩個類別中都定義了 print() 的方法, 所以依據定義, 總共有兩次的 overloading 以及一次的 overriding public class A3 { public class B3 extends A3 { protect

4. 如下的程式碼中, 宣告了類別 A3 和 B3 由於在兩個類別中都定義了 print() 的方法, 所以依據定義, 總共有兩次的 overloading 以及一次的 overriding public class A3 { public class B3 extends A3 { protect 姓名 : 物件導向程式設計 (II) Spring 2010, 期中考 學號 : 是非題 : ( 每題 5 分 ) 注意 : 若答案為 非, 你必須提供正確的解釋才有分數 ; 否則, 以零分計 若有程式錯誤, 請回答 非 並指出錯誤 1. 如下的程式碼中, 宣告了類別 A1 和 B1 若在其他類別( 如控制類別 ) 執行 B1 b1 = new B1(5);, 則 a1 的值會改成 5 public

More information

星星排列 _for loop Protected Sub Page_Load(ByVal sender As Object, ByVal e As Dim h As Integer = 7 'h 為變數 ' Dim i, j As Integer For i = 1 To h

星星排列 _for loop Protected Sub Page_Load(ByVal sender As Object, ByVal e As Dim h As Integer = 7 'h 為變數 ' Dim i, j As Integer For i = 1 To h 資訊系統與實習 製作 : 林郁君 一 2009.09.28 9X9 'button 被按下後 ' Dim i, j As Integer For i = 1 To 9 'i 從 1 到 9' For j = 1 To 9 'j 從 1 到 9' If j * i < 10 Then ' 如果 j 乘上 i 是為個位數 ' Response.Write(i & "*" & j & " =" & i *

More information

Microsoft PowerPoint - EmbSys102_JavaOOP [相容模式]

Microsoft PowerPoint - EmbSys102_JavaOOP [相容模式] 嵌入式系統及實驗 Embedded System and Experiment 詹曉龍 長庚大學電機系 Java 的類別與物件 : 宣告類別 建構子 public class Customer { // Customer 類別宣告 private String name; // 成員資料 private String address; public int age; // 建構子 : 使用參數設定成員資料初始值

More information

Microsoft PowerPoint - ch04_AEL0080.ppt

Microsoft PowerPoint - ch04_AEL0080.ppt 4 選擇 在正常的情況下, 電腦程式的執行是以敘述的排列次序逐步處理的 使用控制架構 (control structures) 可以改變這種既定的先後次序, 讓程式得以進行更複雜的運算, 或以更簡潔的指令來實現演算法 1/42 選擇 4.1 演算法的描述方式 4.2 變數的運用範圍 (Scope of variables) 4.3 if- 敘述 4.4 巢狀 if- 敘述 (Nested if statements)

More information

CC213

CC213 : (Ken-Yi Lee), E-mail: feis.tw@gmail.com 9 [P.11] : Dev C++ [P.12] : http://c.feis.tw [P.13] [P.14] [P.15] [P.17] [P.23] Dev C++ [P.24] [P.27] [P.34] C / C++ [P.35] 10 C / C++ C C++ C C++ C++ C ( ) C++

More information

untitled

untitled 4.1AOP AOP Aspect-oriented programming AOP 來說 AOP 令 理 Cross-cutting concerns Aspect Weave 理 Spring AOP 來 AOP 念 4.1.1 理 AOP AOP 見 例 來 例 錄 Logging 錄 便 來 例 行 留 錄 import java.util.logging.*; public class HelloSpeaker

More information

untitled

untitled 1 Outline 數 料 數 數 列 亂數 練 數 數 數 來 數 數 來 數 料 利 料 來 數 A-Z a-z _ () 不 數 0-9 數 不 數 SCHOOL School school 數 讀 school_name schoolname 易 不 C# my name 7_eleven B&Q new C# (1) public protected private params override

More information

第二節 研究方法 本論文第一章 緒論 說明研究動機與目的 研究方法及研究的範圍及限制 並對 飲食散文的義界 作一觀念的釐清 第二章 文獻探討 就將本研究的理 論建構中的概念作釐清 分別為 現代文學 飲食文學的重要論著 等兩個部 分來描述目前文獻的研究成果 並探討其不足待補述的地方 本研究以 文化研 究 為主要研究基礎 統攝整個研究架構 在不同章節裡 佐以相關研究方法進 行論述 茲圖示如下 研究方法

More information

Microsoft PowerPoint - 20-string-s.pptx

Microsoft PowerPoint - 20-string-s.pptx String 1 String/ 1.: char s1[10]; char *s2; char s3[] = "Chan Tai Man"; char s4[20] = "Chan Siu Ming"; char s5[]={'h','e','l','l','o','\0'; 0 1 2 3 4 5 6 7 8 9 10 11 12 s3 C h a n T a i \0 M a n \0 printf

More information

Microsoft PowerPoint - C_Structure.ppt

Microsoft PowerPoint - C_Structure.ppt 結構與其他資料型態 Janet Huang 5-1 結構的宣告 struct 結構名稱 struct 結構名稱變數 1, 變數 2,, 變數 m; struct 結構名稱 變數 1, 變數 2,, 變數 m; student; student; 5-2 1 結構變數初值的設定 struct 結構名稱 struct 結構名稱變數 = 初值 1, 初值 2,, 初值 n student="janet","1350901",100,95

More information

Microsoft PowerPoint - 04-array_pointer.ppt

Microsoft PowerPoint - 04-array_pointer.ppt Array 與 Pointer Array Dynamical Memory Allocation Array( 陣列 ) 陣列是用來存放同樣型態的資料陣列的大小必須在程式中預先設定在程式執行中, 陣列的大小無法改變陣列中的資料是透過索引 (index) 來存取 一維陣列的宣告 type array_name[array_size]; int iarray[100]; /* an integer array

More information

Microsoft PowerPoint - STU_C_Lang_CH13.ppt

Microsoft PowerPoint - STU_C_Lang_CH13.ppt 第 13 章 動態配置記憶體 程式設計與生活 - 使用 C 語言 Shi-Huang Chen Spring 2013 第 13 章 動態配置記憶體 13-1 記憶體配置函式 malloc( ) 13-2 動態配置結構陣列 配置記憶體 預估需求數量的範圍是一項不容易的學問 例 : 大到預估今年國家預算, 小到預估櫥窗裡展示的毛線衣, 需要多少磅毛線才能織成 撰寫程式時, 一樣無法預估程式執行所需的記憶體空間

More information

全國各級農會第 2 次聘任職員統一考試試題 科目 : 程式設計類別 : 九職等以下新進人員作答注意事項 : 1 全部答案請寫在答案卷內, 如寫在試題紙上, 則不予計分 2 請以黑色或藍色鋼筆或原子筆書寫, 並以橫式書寫 ( 由左至右, 由上而下 ) 一 選擇題 ( 每題 4 分, 共 40 分 )

全國各級農會第 2 次聘任職員統一考試試題 科目 : 程式設計類別 : 九職等以下新進人員作答注意事項 : 1 全部答案請寫在答案卷內, 如寫在試題紙上, 則不予計分 2 請以黑色或藍色鋼筆或原子筆書寫, 並以橫式書寫 ( 由左至右, 由上而下 ) 一 選擇題 ( 每題 4 分, 共 40 分 ) 全國各級農會第 2 次聘任職員統一考試試題 一 選擇題 ( 每題 4 分, 共 40 分 ) 1. 在 Java 語言中, 請問下列何者資料型別的變數, 所需的儲存空間最少? (a) char (b) float (c) double (d) int 2. 請問下列何者非 C 語言的關鍵字 (key word)? (a) const (b) default (c) dynamic (d) continue

More information

Microsoft PowerPoint - ASP03.ppt

Microsoft PowerPoint - ASP03.ppt VB.NET 語法建立 ASP.NET 程式 資科系林偉川 物件的基本觀念 ASP.NET 是一種伺服端網頁技術, 本身並沒有專屬的程式語法, 預設是使用 VB.NET 語法,VB.NET 語言是一種支援.NET Framework 的物件導向程式語言 ASP.NET 主要是使用 VB.NET 語法和.NET Framework 類別的物件, 就算讀者不熟悉物件導向程式設計也沒有關係, 因為只需了解物件的基本觀念和如何使用

More information

第1章

第1章 第 15 章 標準類別 1 本章提要 15.1 前言 15.2 基本資料類別介紹 15.3 Integer 類別 15.4 Double 類別 15.5 Float 類別 Long 類別 Short 類別 15.6 數學相關類別 Math 15.7 後記 2 15.1 前言 不同基本資料型別可以互相轉換, 但也只予許由小轉大的情況, 例如 1. byte 轉為 short int long float

More information

ACI pdf

ACI pdf 09 9.1 -...9-2 9.1.1...9-2 9.1.2...9-3 9.2 -...9-4 9.2.1 PMT - ()...9-4 9.2.2...9-6 9.3 -...9-8 9.3.1 PMT - ()...9-8 9.4...9-10 9.4.1... 9-11 9.4.2...9-12 9.4.3...9-14 9.5 -...9-17 9.5.1...9-18 1 Excel...9-21

More information

第一章 簡介

第一章  簡介 數 數 數 HLOOKUP VLOOKUP LOOKUP VLOOKUP VLOOKUP(,, 欄, 不 ) =Vlookup(lookup_vaule, table_array, col_index_num, [range_lookup]) 欄 欄 列 欄 行 料 列 欄 不 邏 TRUE 省略 不 數 FALSE 不 #N/A 金 不 例 金 例 數 0 0 300,000 300,000 不

More information

Microsoft PowerPoint - Class5.pptx

Microsoft PowerPoint - Class5.pptx C++ 程式初探 V 2015 暑期 ver. 1.0.1 C++ 程式語言 大綱 1. 大量檔案讀取 & 計算 2. 指標 3. 動態記憶體 & 動態陣列 4. 標準函式庫 (STL) vector, algorithm 5. 結構與類別 2 大量檔案讀取 & 計算 若目前有一個程式將讀取純文字文件 (.txt) 中的整數, 並將該文件中的整數有小到大排序後, 儲存到另外一個新的純文字件中 假設有

More information

untitled

untitled 1 Outline 流 ( ) 流 ( ) 流 ( ) 流 ( ) 流 ( ) 狀 流 ( ) 利 來 行流 if () 立 行 ; else 不 立 行 ; 例 sample2-a1 (1) 列 // 料 Console.Write(""); string name = Console.ReadLine(); Console.WriteLine(" " + name + "!!"); 例 sample2-a1

More information

Microsoft PowerPoint - 第10章.ppt

Microsoft PowerPoint - 第10章.ppt 副程式 通常我們會將重複功能的程式碼, 獨立形成一個固定的程式片段, 讓主程式重複呼吸使用稱為副程式 主程式 開 始 副程式 1 副程式 2 敘述 1 敘述 2 Sub 功能 1( ) : : End Sub Sub 功能 2( ) : : End Sub 輸 出 結 束 主程式與副程式 10-1 副程式 副程式和函式最大的不同處在於 : (1) 副程式並不傳回值 (2) 函式會傳回一個值 假設要讓副程式回傳值,

More information

Mac Java import com.apple.mrj.*;... public class MyFirstApp extends JFrame implements ActionListener, MRJAboutHandler, MRJQuitHandler {... public MyFirstApp() {... MRJApplicationUtils.registerAboutHandler(this);

More information

46 2011 11 467 數位遊戲式學習系統 7 2011 11 467 47 3 DBGameSys 48 2011 11 467 正規化資料模組 如何配置並儲存電子化資料 以 便減少資料被重覆儲存的程序 DBGameSys的主要功能模組包 學習者 審核評分模組 含 正規化資料模組 審核評分 模組 高分列表模組3大區塊 系統資料庫 在正規化資料模組的執行 高分列表模組 過程中 先要求學習者瀏覽遊戲

More information

Microsoft Word - 04_object_Boxing_property_indexer.doc

Microsoft Word - 04_object_Boxing_property_indexer.doc C# 程式設計人員參考 object 型別是.NET Framework 中,System.Object 的別名 您可以將 任何型別的值指派給 object 型別的變數 所有的資料型別, 包括預先定義的和使用者定義的, 都繼承自 System.Object 類別 object 資料型別是物件 Box 目標或來源的型 別 範例下列範例顯示 object 型別的變數如何接受任何資料型別的值, 以及 object

More information

jQuery實戰手冊

jQuery實戰手冊 本章學習目標 1. 讓讀者了解一維 二維及多維陣列的結構及表示方法 2. 讓讀者了解矩陣中常見的各種運算 < 轉置 相加 相乘及稀疏矩陣 > 本章內容 3-1 陣列的觀念 3-2 陣列的宣告與儲存方式 3-3 二維陣列的觀念 3-4 多維陣列的觀念 3-5 陣列在記憶體中的表示法 3-6 多項式 (polynomial) 3-7 矩陣 (Matrices) 3-8 特殊矩陣本章重點整理課後評量 3-1

More information

untitled

untitled How to using M-Power Report API M-Power Report API 力 了 M-Power Report -- Java (Library) M-Power Report API 行 Java M-Power Report M-Power Report API ( 30 ) PDF/HTML/CSV/XLS JPEG/PNG/SVG 料 料 OutputStream

More information

第3章.doc

第3章.doc 3 3 3 3.1 3 IT Trend C++ Java SAP Advantech ERPCRM C++ C++ Synopsys C++ NEC C C++PHP C++Java C++Java VIA C++ 3COM C++ SPSS C++ Sybase C++LinuxUNIX Motorola C++ IBM C++Java Oracle Java HP C++ C++ Yahoo

More information

Microsoft PowerPoint - vb_net8

Microsoft PowerPoint - vb_net8 字串與陣列 資訊科技系 林偉川 一維陣列的處理 陣列 (Array) 是一種基本的資料結構, 它是將相同資料型別的變數集合起來, 使用一個名稱代表, 然後使用索引值存取變數的值, 如下圖所示 : 2 1 宣告一維陣列 - 宣告 VB.NET 陣列同樣使用 Dim 指令宣告, 我們可以在宣告時同時指定陣列的尺寸, 一維陣列的宣告語法, 如下所示 : Dim 陣列名稱 ( 最大索引 ) As 資料型別

More information

OOP with Java 通知 Project 4: 4 月 18 日晚 9 点 关于抄袭 没有分数

OOP with Java 通知 Project 4: 4 月 18 日晚 9 点 关于抄袭 没有分数 OOP with Java Yuanbin Wu cs@ecnu OOP with Java 通知 Project 4: 4 月 18 日晚 9 点 关于抄袭 没有分数 复习 类的复用 组合 (composition): has-a 关系 class MyType { public int i; public double d; public char c; public void set(double

More information

p-2

p-2 B 卷 選擇題 共 50 題 ( 共 100 分 ) 1. 執行下列 Visual Basic 程式片段後, 共輸出幾筆資 料? x = 0: y = 1 Print y x = x + y Print x y = y + 1 If x >= 10 Then Exit Loop While y

More information

本章內容 2-1 陣列及陣列位址的計算一維陣列位址計算多維陣列位址計算 2-2 一維陣列的基本運算讀取 寫入 複製 輸出 插入資料 刪除 2-3 二維陣列及矩陣的儲存與運算矩陣輸出 矩陣轉置 矩陣相加 矩陣相乘 2-4 字串 ( 字元陣列 ) 計算字串長度 字串複製 字串比較 子字串擷取 2

本章內容 2-1 陣列及陣列位址的計算一維陣列位址計算多維陣列位址計算 2-2 一維陣列的基本運算讀取 寫入 複製 輸出 插入資料 刪除 2-3 二維陣列及矩陣的儲存與運算矩陣輸出 矩陣轉置 矩陣相加 矩陣相乘 2-4 字串 ( 字元陣列 ) 計算字串長度 字串複製 字串比較 子字串擷取 2 第二章 Array 版權屬作者所有, 非經作者同意不得用於教學以外用途 1 本章內容 2-1 陣列及陣列位址的計算一維陣列位址計算多維陣列位址計算 2-2 一維陣列的基本運算讀取 寫入 複製 輸出 插入資料 刪除 2-3 二維陣列及矩陣的儲存與運算矩陣輸出 矩陣轉置 矩陣相加 矩陣相乘 2-4 字串 ( 字元陣列 ) 計算字串長度 字串複製 字串比較 子字串擷取 2 2-1 陣列及陣列位址的計算 陣列

More information

單步除錯 (1/10) 打開 Android Studio, 點選 Start a new Android Studio project 建立專案 Application name 輸入 BMI 點下 Next 2 P a g e

單步除錯 (1/10) 打開 Android Studio, 點選 Start a new Android Studio project 建立專案 Application name 輸入 BMI 點下 Next 2 P a g e Android Studio Debugging 本篇教學除了最基本的中斷點教學之外, 還有條件式中斷的教學 條件式中斷是進階的除錯技巧, 在某些特定情況中, 我們有一個函數可能會被呼叫數次, 但是我們只希望在某種條件成立時才進行中斷, 進而觀察變數的狀態 而條件式中斷這項技巧正是符合這項需求 本教學分兩部分 單步除錯 (Page2~11, 共 10) 條件式中斷點 (Page12~17, 共 6)

More information

Java java.lang.math Java Java.util.Random : ArithmeticException int zero = 0; try { int i= 72 / zero ; }catch (ArithmeticException e ) { // } 0,

Java java.lang.math Java Java.util.Random : ArithmeticException int zero = 0; try { int i= 72 / zero ; }catch (ArithmeticException e ) { // } 0, http://debut.cis.nctu.edu.tw/~chi Java java.lang.math Java Java.util.Random : ArithmeticException int zero = 0; try { int i= 72 / zero ; }catch (ArithmeticException e ) { // } 0, : POSITIVE_INFINITY NEGATIVE_INFINITY

More information

10-2 SCJP SCJD 10.1 昇陽認證 Java 系統開發工程師 的認證程序 Java IT SCJD

10-2 SCJP SCJD 10.1 昇陽認證 Java 系統開發工程師 的認證程序 Java IT SCJD 10 SCJD 簡介 Java 10-2 SCJP SCJD 10.1 昇陽認證 Java 系統開發工程師 的認證程序 Java IT SCJD 10 SCJD 10-3 Java Java SCJD 7 Swing RMI 10.1.1 The Assignment The Essay 9 10 10-4 SCJP SCJD 90 10.1.2 SCJP Java 90 120 Swing 10

More information

Fun Time (1) What happens in memory? 1 i n t i ; 2 s h o r t j ; 3 double k ; 4 char c = a ; 5 i = 3; j = 2; 6 k = i j ; H.-T. Lin (NTU CSIE) Referenc

Fun Time (1) What happens in memory? 1 i n t i ; 2 s h o r t j ; 3 double k ; 4 char c = a ; 5 i = 3; j = 2; 6 k = i j ; H.-T. Lin (NTU CSIE) Referenc References (Section 5.2) Hsuan-Tien Lin Deptartment of CSIE, NTU OOP Class, March 15-16, 2010 H.-T. Lin (NTU CSIE) References OOP 03/15-16/2010 0 / 22 Fun Time (1) What happens in memory? 1 i n t i ; 2

More information

Java 程式設計初階 第 5 章:基本輸出入 & 流程控制

Java 程式設計初階 第 5 章:基本輸出入 & 流程控制 Java 程式設計 標準輸出入與流程控制 本章大綱 標準輸出入 (Standard I/O) 分支 (Branch) if ~ else switch ~ case 迴圈 (Loop) for while do ~ while 中斷指令 break continue 總整理 標準輸出 定義 : 將資料印到螢幕上 Java 標準輸出指令 System.out.println( 資料 ) 將資料印出後換行

More information

OOP with Java 通知 Project 4: 4 月 19 日晚 9 点

OOP with Java 通知 Project 4: 4 月 19 日晚 9 点 OOP with Java Yuanbin Wu cs@ecnu OOP with Java 通知 Project 4: 4 月 19 日晚 9 点 复习 类的复用 组合 (composition): has-a 关系 class MyType { public int i; public double d; public char c; public void set(double x) { d

More information

Microsoft PowerPoint - 13_指標、資料傳遞2.pptx

Microsoft PowerPoint - 13_指標、資料傳遞2.pptx 1 2 指標 Lecture 13 指標函式呼叫的資料傳遞 (III) 傳址指標與陣列 Pointer 3 4 指標 / 指位器 (Pointer) 變數 int a; 整數型別, 名稱為 a 變數是為了使用記憶體資源來儲存資料與進行運算 所有的變數都佔有記憶體空間 記憶體 可視為一個很大的一維陣列, 單位是 byte 問題 一個 4KB 的電腦, 其記憶體位置 ( 編號 ) 從 0 至? 4 x

More information

1: public class MyOutputStream implements AutoCloseable { 3: public void close() throws IOException { 4: throw new IOException(); 5: } 6:

1: public class MyOutputStream implements AutoCloseable { 3: public void close() throws IOException { 4: throw new IOException(); 5: } 6: Chapter 15. Suppressed Exception CH14 Finally Block Java SE 7 try-with-resources JVM cleanup try-with-resources JVM cleanup cleanup Java SE 7 Throwable getsuppressed Throwable[] getsuppressed() Suppressed

More information

Microsoft Word - part doc

Microsoft Word - part doc 3 指標與陣列 3-1 指標與一維陣列 3-2 指標與二維陣列 3-3 陣列指標 3-4 為什麼 parr 等同於 *parr? 3-5 指向陣列的指標 3-6 多重指標 3-7 命令列引數 3-8 除錯題 3-9 問題演練 3-10 程式實作 32 Part 1 C 程式語言篇 指標其實就是一位址 陣列的名稱, 表示此陣列第一個元素的位址, 所以它也是指標 由此可知, 指標與陣列的關係是很密切的

More information

840 提示 Excel - Excel -- Excel (=) Excel ch0.xlsx H5 =D5+E5+F5+G5 (=) = - Excel 00

840 提示 Excel - Excel -- Excel (=) Excel ch0.xlsx H5 =D5+E5+F5+G5 (=) = - Excel 00 Excel - - Excel - -4-5 840 提示 Excel - Excel -- Excel (=) Excel ch0.xlsx H5 =D5+E5+F5+G5 (=) = - Excel 00 ( 0 ) 智慧標籤 相關說明提示 -5 -- Excel 4 5 6 7 8 + - * / % ^ = < >= & 9 0 (:) (,) ( ) Chapter - :,

More information

JavaIO.PDF

JavaIO.PDF O u t p u t S t ream j a v a. i o. O u t p u t S t r e a m w r i t e () f l u s h () c l o s e () public abstract void write(int b) throws IOException public void write(byte[] data) throws IOException

More information

Microsoft PowerPoint - B9-2.pptx

Microsoft PowerPoint - B9-2.pptx 單元名稱 : 9 三角函數的積分 教學目標 : 使學生了解三角函數的積分 三角函數積分的類型及一些積分技巧 學習時數 : 約一小時 教學內容 :. [ 第一類型 ] 六個三角函數本身的積分. [ 第二類型 ] sin n 及 os n 的積分 sin os m n. [ 第三類型 ] 的積分 4. [ 第四類型 ] n 及 ot n 的積分 5. [ 第五類型 ] n 及 s n 的積分 m 6.

More information

使 用 Java 语 言 模 拟 保 险 箱 容 量 门 板 厚 度 箱 体 厚 度 属 性 锁 具 类 型 开 保 险 箱 关 保 险 箱 动 作 存 取 款

使 用 Java 语 言 模 拟 保 险 箱 容 量 门 板 厚 度 箱 体 厚 度 属 性 锁 具 类 型 开 保 险 箱 关 保 险 箱 动 作 存 取 款 JAVA 程 序 设 计 ( 肆 ) 徐 东 / 数 学 系 使 用 Java 语 言 模 拟 保 险 箱 容 量 门 板 厚 度 箱 体 厚 度 属 性 锁 具 类 型 开 保 险 箱 关 保 险 箱 动 作 存 取 款 使 用 Java class 代 表 保 险 箱 public class SaveBox 类 名 类 类 体 实 现 封 装 性 使 用 class SaveBox 代 表 保

More information

Microsoft PowerPoint - SE7ch06.ppt

Microsoft PowerPoint - SE7ch06.ppt 第六章 函式 (Method; ; 方法 ) 課前指引在設計程式時, 我們會將一個較大的程式切割為許多個子功能, 每個子功能或許可以再切割為數個更小的功能, 一直將功能分解到每個小功能皆可以很輕易地由簡短的程式加以完成為止 我們通常將這些小功能獨立寫成一個 函式, 或者將程式中常常重複的程式區塊獨立出來寫成一個 函式, 當程式需要運用該功能時, 就可以直接呼叫函式, 使得主要程式的長度變短而有助於日後的維護

More information

Excel VBA Excel Visual Basic for Application

Excel VBA  Excel Visual Basic for Application Excel VBA Jun5,00 Sub 分頁 () Dim i As Integer Dim Cname As String Dim Code As Variant Set score=thisworkbook.sheets("sheet") Code=Array(" 專北一 "," 專北二 "," 專北三 "," 專桃園 "," 專桃竹 "," 專中苗 ", " 專台中 "," 專台南 ","

More information

(1) (2) (3) 1. (1) 2

(1) (2) (3) 1. (1) 2 0386 71.32% 14A 1 (1) (2) (3) 1. (1) 2 (a) (b) (i) (ii) (iii) 3 (iv) (a) (b) (c) (d) 6% 4 2013 3 26 [2013]624 10 5 2013 6 28 [2013]1246 2015 3 [2015]351 0.2 6 [2015]748 180C 7 * * 8 14A (2) 417,800,000

More information

EJB-Programming-4-cn.doc

EJB-Programming-4-cn.doc EJB (4) : (Entity Bean Value Object ) JBuilder EJB 2.x CMP EJB Relationships JBuilder EJB Test Client EJB EJB Seminar CMP Entity Beans Session Bean J2EE Session Façade Design Pattern Session Bean Session

More information

01 用 ActionScript 3.0 開始認識 Flash CS3 Flash 是應用在網路上非常流行且高互動性的多媒體技術, 由於擁有向量圖像體積小的優點, 而且 Flash Player 也很小巧精緻, 很快的有趣的 Flash 動畫透過設計師的創意紅遍了整個網際網路 雖然很多人都對 Fl

01 用 ActionScript 3.0 開始認識 Flash CS3 Flash 是應用在網路上非常流行且高互動性的多媒體技術, 由於擁有向量圖像體積小的優點, 而且 Flash Player 也很小巧精緻, 很快的有趣的 Flash 動畫透過設計師的創意紅遍了整個網際網路 雖然很多人都對 Fl 01 用 ActionScript 3.0 開始認識 Flash CS3 Flash 是應用在網路上非常流行且高互動性的多媒體技術, 由於擁有向量圖像體積小的優點, 而且 Flash Player 也很小巧精緻, 很快的有趣的 Flash 動畫透過設計師的創意紅遍了整個網際網路 雖然很多人都對 Flash 可以做精美的網路動畫並不陌生, 但是實際上 Flash 不僅如此, 只要搭配 ActionScript

More information

jQuery實戰手冊

jQuery實戰手冊 3-4 多維陣列的觀念 當陣列的維度是二維以上時, 就稱為多維陣列 而其中最常見是三維陣列, 其圖形為三度空間的立體圖形, 並且我們可以將三維陣列視為多個二維陣列的組合 Dim 陣列名稱 (L,M,N) As 資料型態 L 代表二維陣列個數 M 代表列數 N 代表行數 Dim Score (2,3,4) As Integer ' 二維陣列的個數 : 0~2 共有 3 個二維陣列 ' 列註標表示範圍

More information

Microsoft PowerPoint - CH07 Arrays and Vectors [相容模式]

Microsoft PowerPoint - CH07 Arrays and Vectors [相容模式] CH7 陣列與向量 Array and Vectors 課程名稱 : 資管一程式設計任課教師 : 謝明哲單位職稱 : 台東大學資管系副教授電子郵件 :hmz@nttu.edu.tw hmz@nttu.edu.tw 2016 1 Outline 什麼是陣列? 陣列的運用 排序方式 多維陣列 hmz@nttu.edu.tw 2016 2 什麼是陣列? hmz@nttu.edu.tw 2016 3 陣列

More information

chp6.ppt

chp6.ppt Java 软 件 设 计 基 础 6. 异 常 处 理 编 程 时 会 遇 到 如 下 三 种 错 误 : 语 法 错 误 (syntax error) 没 有 遵 循 语 言 的 规 则, 出 现 语 法 格 式 上 的 错 误, 可 被 编 译 器 发 现 并 易 于 纠 正 ; 逻 辑 错 误 (logic error) 即 我 们 常 说 的 bug, 意 指 编 写 的 代 码 在 执 行

More information

Microsoft PowerPoint - The Twelve Days of Xmas.ppt

Microsoft PowerPoint - The Twelve Days of Xmas.ppt The Twelve Days of Xmas https://www.youtube.com/v/kqeobzlx Z8 丁培毅 1 On the first day of Xmas A Partridge in a Pear Tree On the second day of Xmas On the third day of Xmas On the fourth day of Xmas Lyrics

More information

雲端 Cloud Computing 技術指南 運算 應用 平台與架構 10/04/15 11:55:46 INFO 10/04/15 11:55:53 INFO 10/04/15 11:55:56 INFO 10/04/15 11:56:05 INFO 10/04/15 11:56:07 INFO

雲端 Cloud Computing 技術指南 運算 應用 平台與架構 10/04/15 11:55:46 INFO 10/04/15 11:55:53 INFO 10/04/15 11:55:56 INFO 10/04/15 11:56:05 INFO 10/04/15 11:56:07 INFO CHAPTER 使用 Hadoop 打造自己的雲 8 8.3 測試 Hadoop 雲端系統 4 Nodes Hadoop Map Reduce Hadoop WordCount 4 Nodes Hadoop Map/Reduce $HADOOP_HOME /home/ hadoop/hadoop-0.20.2 wordcount echo $ mkdir wordcount $ cd wordcount

More information

Microsoft PowerPoint - SE7ch07.ppt

Microsoft PowerPoint - SE7ch07.ppt 第七章物件導向設計 : 類別與物件 課前指引在本章中, 我們將正式進入物件導向程式設計的領域, 雖然我們在前面章節, 已經使用過某些 Java 類別庫的類別或物件 ( 例如 :Math 類別 String 物件 ), 但卻未曾學習如何建立一個物件 ( 事實上建立物件必須先宣告類別 ) 在本章中, 我們將從頭教您如何使用 Java 並以物件觀點設計程式, 逐漸體驗物件導向程式設計帶來的好處, 尤其是在發展中大型專案時,

More information

Microsoft PowerPoint - Bronson-v3-ch07.ppt [相容模式]

Microsoft PowerPoint - Bronson-v3-ch07.ppt [相容模式] C++ FOR ENGINEERS AND SCIENTISTS THIRD EDITION Chapter 7 Arrays Objectives 2 In this chapter, you will learn about: One-dimensional arrays 一維陣列 Array initialization 陣列起始化 Declaring and processing two-dimensional

More information

Microsoft PowerPoint - java2012-ch13投影片.ppt

Microsoft PowerPoint - java2012-ch13投影片.ppt 第十三章例外處理 瞭解什麼是例外處理認識例外類別的繼承架構認識例外處理的機制學習如何撰寫例外類別 1 例外的基本觀念 在撰寫程式時常見的幾種情況 : (1) 要開啟的檔案並不存在 (2) 存取陣列時, 陣列的索引值超過陣列容許的範圍 (3) 原本預期使用者由鍵盤輸入的是整數, 但使用者輸入的卻是英文字母 這類不尋常的狀況稱為 例外 (exception) 在 Java 中, 所有的例外都是以類別的型態存在

More information

任務二 : 產生 20 個有炸彈的磚塊, 放在隨機的位置編輯 Block 類別的程式碼 import greenfoot.; // (World, Actor, GreenfootImage, Greenfoot and MouseInfo) Write a description of class

任務二 : 產生 20 個有炸彈的磚塊, 放在隨機的位置編輯 Block 類別的程式碼 import greenfoot.; // (World, Actor, GreenfootImage, Greenfoot and MouseInfo) Write a description of class 踩地雷遊戲 高慧君南港高中 開啟專案 MineSweep 任務一 : 產生 30X20 個磚塊編輯 Table 類別的程式碼 import greenfoot.; // (World, Actor, GreenfootImage, Greenfoot and MouseInfo) import java.util.arraylist; Write a description of class MyWorld

More information

怎样使孩子更加聪明健康(五).doc

怎样使孩子更加聪明健康(五).doc ...1...8...13...19...22...27...35...37 0-1...43...47...50...54...58...62...64...66...71...76...78 I ...81...83...84...86...87...88...90...92...93...94...97...99... 102... 105... 109... 110...111 ABC...

More information

javaexample-02.pdf

javaexample-02.pdf n e w. s t a t i c s t a t i c 3 1 3 2 p u b l i c p r i v a t e p r o t e c t e d j a v a. l a n g. O b j e c t O b j e c t Rect R e c t x 1 y 1 x 2 y 2 R e c t t o S t r i n g ( ) j a v a. l a n g. O

More information

Chapter 9: Objects and Classes

Chapter 9: Objects and Classes Fortran Algol Pascal Modula-2 BCPL C Simula SmallTalk C++ Ada Java C# C Fortran 5.1 message A B 5.2 1 class Vehicle subclass Car object mycar public class Vehicle extends Object{ public int WheelNum

More information

Microsoft Word FinalSolution.doc

Microsoft Word FinalSolution.doc 1071 NTOUCSE 程式設計 1C 期末考參考答案 1 / 7 108/01/08 ( 二 ) 1. 請根據下列要求撰寫一個 函式, 判斷傳入的 long long 型態正整數 number 是否是 2 的次方數 (1 算是 2 0 ), 是的話請傳回 1, 不是的話請傳回 0 a. [5] 請運用迴圈撰寫 while (number%2==0) number /= 2; // 把所有 2 的因數除掉,

More information

Microsoft Word - data_mid1611_and_sol.docx

Microsoft Word - data_mid1611_and_sol.docx Department of Computer Science and Engineering National Sun Yat-sen University Data Structures - Middle Exam, Nov. 14, 2016 1. Explain each of the following terms. (16%) (a) private in C++ language (b)

More information

PowerPoint 簡報

PowerPoint 簡報 Q1: 追蹤程式 : 印出結果? 搶答 int p=0, i=1, n=9; while (i

More information

Java 程式設計初階 第 5 章:基本輸出入 & 流程控制

Java 程式設計初階 第 5 章:基本輸出入 & 流程控制 Standard I/O & Flow Control Outline 2 Standard I/O Branch if ~ else switch ~ case Loop For while do ~ while Interrupt Break continue Conclusion Standard I/O 3 Definition: 將資料印到螢幕上 Java 標準輸出指令 System.out.println(

More information

Microsoft Word - C-pgm-ws2010.doc

Microsoft Word - C-pgm-ws2010.doc Information and Communication Technology 資訊與通訊科技 Loops (while/for) C 廻路 姓名 : 班別 : ( ) CS C Programming #1 Functions 函數 : 1 若 n=14, 求以下表示式的值 Expressions 表示式 Value 值 Expressions 表示式 Value 值 A 20 2 * (n /

More information

<4D F736F F D203938BEC7ACECBCD2C0C0B8D5A8F7AEE6A6A1C0C92DB57BA6A1B35DAD705FA6B3B8D1B5AA5F2E646F63>

<4D F736F F D203938BEC7ACECBCD2C0C0B8D5A8F7AEE6A6A1C0C92DB57BA6A1B35DAD705FA6B3B8D1B5AA5F2E646F63> 全國高級中等學校 98 學年度商業類科學生技藝競賽 程式設計 職種學科模擬試卷 選手證號碼 : 姓名 : 注意事項 : 請將答案劃記於答案卡, 未依規定劃記者不予計分 試題說明 : ( 選擇題每題 4 分, 共 100 分 ) ( A ) 1. 在 ASCII Code 的表示法中, 下列大小之關係何者為錯誤? (A) A>B>C (B) c>b>a (C) 3>2>1 (D) p>g>e ( D

More information

Microsoft Word - About_C_PointerAdvanced.doc

Microsoft Word - About_C_PointerAdvanced.doc (*) 如何宣告或解讀某一個資料型態的指標變數? 在變數名稱前加上一個 * 號 ( 陣列也可算成是指標只是其值不能被更改!) 反過來在解讀變數的型態時 : 先找到變數名稱, 再看其左邊是否有星號 ( 至多取一個 ), 若有表示這是一個指標變數, 否則就是一般的變數 至於資料型態的部份, 只要將變數或連同 * 號移去後, 剩下的部份就是此變數或指標的資料型態 (*) 優先順序 : 運算子的優先順序 5

More information

Microsoft Word - CPMidTerm2011SpringSolution

Microsoft Word - CPMidTerm2011SpringSolution 通識計算機程式設計期中考參考解答, 4/22/2011 1. (a) 宣告 int 變數 k, bool 變數 b, double 變數 x (3%) 答 : int k; bool b; double x; (b) 在螢幕顯示一行字, 要求使用者輸入一個整數 (3%) 答 : Console.WriteLine(" 輸入一個整數 "); (c) 自鍵盤讀入一個整數., 並將其值存入已宣告之 int

More information

Powerpoint 2003

Powerpoint 2003 數 什 數 數 利 數 靈 利 數 例說 什 數 數 數 數 行 數 行 數 數 數 [ = ] 數 數 例 =SUM(A1 A3,A5) 數 數 TRUE FALSE 邏 列 #N/A 參 數 數 數 數 什 數 數 數 數 例 =ROUND( 數 立 數 [ 數 ] 數 數 [ 數 ] 數 數 數 數 數 數 數 類 數 邏 數 數 數 參 數 數 料 數 數 數 率 數 =B2+B3+B4+B5+C2+C3+C4+C5

More information

Chapter 9: Objects and Classes

Chapter 9: Objects and Classes Java application Java main applet Web applet Runnable Thread CPU Thread 1 Thread 2 Thread 3 CUP Thread 1 Thread 2 Thread 3 ,,. (new) Thread (runnable) start( ) CPU (running) run ( ) blocked CPU sleep(

More information

重 要 声 明 长 城 证 券 股 份 有 限 公 司 编 制 本 报 告 的 内 容 及 信 息 来 源 于 陕 西 东 岭 工 贸 集 团 股 份 有 限 公 司 提 供 的 证 明 文 件 以 及 第 三 方 中 介 机 构 出 具 的 专 业 意 见 长 城 证 券 对 报 告 中 所 包

重 要 声 明 长 城 证 券 股 份 有 限 公 司 编 制 本 报 告 的 内 容 及 信 息 来 源 于 陕 西 东 岭 工 贸 集 团 股 份 有 限 公 司 提 供 的 证 明 文 件 以 及 第 三 方 中 介 机 构 出 具 的 专 业 意 见 长 城 证 券 对 报 告 中 所 包 2015 年 陕 西 东 岭 工 贸 集 团 股 份 有 限 公 司 ( 宝 鸡 市 马 营 路 东 段 ) 公 司 债 券 受 托 管 理 事 务 报 告 (2015 年 度 ) 债 券 代 理 人 长 城 证 券 股 份 有 限 公 司 ( 深 圳 市 福 田 区 深 南 大 道 6008 号 特 区 报 业 大 厦 16-17 层 ) 2016 年 4 月 12 日 1 重 要 声 明 长 城

More information

C/C++基礎程式設計班

C/C++基礎程式設計班 C/C++ 基礎程式設計 指標 (Pointer) 講師 : 張傑帆 CSIE, NTU 瘋到自以為能改變世界的人, 就能改變世界 The people who are crazy enough to think they can change the world are the ones who do.-steve Jobs 課程大綱 指標簡介 陣列與指標 動態記憶體配置 指標宣告進階 指標 用途

More information

2009年3月全国计算机等级考试二级Java语言程序设计笔试试题

2009年3月全国计算机等级考试二级Java语言程序设计笔试试题 2009 年 3 月 全 国 计 算 机 等 级 考 试 笔 试 试 卷 二 级 Java 语 言 程 序 设 计 ( 考 试 时 间 90 分 钟, 满 分 100 分 ) 一 选 择 题 ( 每 题 2 分, 共 70 分 ) 下 列 各 题 A) B) C) D) 四 个 选 项 中, 只 有 一 个 选 项 是 正 确 的 请 将 正 确 选 项 填 涂 在 答 题 卡 相 应 位 置 上,

More information

Microsoft PowerPoint - 04_Array

Microsoft PowerPoint - 04_Array 第四章 陣列 4.1 為何需要陣列 4.4 多維陣列 4.2 陣列常用的屬性與方法 4.5 不規則陣列 4.3 Array 類別常用靜態方法 備註 : 可依進度點選小節 4.1 為何需要陣列 4.1.1 何謂陣列 (Array) 前面章節, 每使用到一個資料就需宣告一個變數來存放, 資料一多時, 變數亦跟著增加, 增加變數命名困擾且程式長度亦增長不易維護 C# 對相同性質的資料提供陣列來存放 在宣告陣列時

More information