JAVA基礎程式設計班

Size: px
Start display at page:

Download "JAVA基礎程式設計班"

Transcription

1 JAVA 基礎程式設計班 [ 第 8 章 ] 例外與檔案處理 國立台灣大學資訊工程學系暨研究所 資訊系統訓練班 講師 : 宋浩

2 章節目錄 8-1 例外處理 8-2 自訂例外 8-3 檔案處理 8-4 序列化處理 台灣大學資訊工程系資訊系統訓練班 2

3 8-1 例外處理 台灣大學資訊工程系資訊系統訓練班 3

4 例外處理 (Exception-handling) Java 程式語言非常嚴謹, 對程式的錯誤處理有一套很嚴謹的處理機制 除了在編譯時期嚴格的檢查原始碼可能產生的錯誤之外, 在程式執行時期也提供了相關的處理機制, 而這項機制稱為 例外處理機制 (Exception-handling Mechanishm) 台灣大學資訊工程系資訊系統訓練班 4

5 Java 的例外與錯誤 程式執行時可能產生不正常的情況, 而這不常的情況可能是所謂的 例外, 比方說 : 開啟一個不存在的檔案 除數為零 陣列的存取超出了索引值的範圍 未載入相關的套件即使用套件中的類別 台灣大學資訊工程系資訊系統訓練班 5

6 為什麼要有例外? 如果沒有例外處理 public class ReadFile { public void Read() { 開啟檔案 ; 決定檔案大小 ; 配置記憶體 ; 將檔案讀入記憶體 ; 關閉檔案 ; } } 指定檔案不存在檔尾記號損毀, 無法決定大小記憶體不足檔案毀損, 讀檔失敗檔案他人使用中, 無法關閉 程式停止! 台灣大學資訊工程系資訊系統訓練班 6

7 用 if-else 來處理例外呢? public class ReadFile { public int Read() { int ErrCode = 0; 開啟檔案 ; if ( 檔案存在 ) { 決定檔案大小 ; if ( 檔案大小已定 ) { 配置記憶體 ; if ( 記憶體足夠 ) { 將檔案讀入記憶體 ; if ( 讀入成功 ) { } } } else } else { } else { } } else { ErrCode = -3; } 關閉檔案 ; if ( 檔案無法關閉 && 無其它錯誤 ) ErrCode = -4; else ErrCode = -5; ErrCode = -6; return ErrCode; } ErrCode = -2; 開始操作檔案內容 ; ErrCode = -1; 台灣大學資訊工程系資訊系統訓練班 7

8 Java 例外的概念 (1) Java 將所有的例外 (Exception), 通通宣告成物件, 且全部繼承 Throwable 物件 java.lang.object Throwable Error Exception CheckedException RuntimeException 台灣大學資訊工程系資訊系統訓練班 8

9 Java 例外的概念 (2) Java VM Errors 此區所發出的例外事件,JVM 會自行處理 Checked Exceptions 此區所發出的例外事件, 是 Java 強迫要求程式師一定要處理的, 如不處理, 則 Compile 時期就會發生錯誤訊息 Runtime Exceptions 此區所發出的例外事件, 是使用者操作不小心所引起的, 程式師可處理可不處理,Java 並沒有硬性規定要攔截此類 Exception 台灣大學資訊工程系資訊系統訓練班 9

10 常見 JVM Errors 介紹 Error ThreadDeath VirtualMachineError ThreadDeath: 當一個程式無預警停止時, 就會發出此錯誤 VirtualMachineError: 當 JVM 內部出現無法解決的問題時, 就會發出此錯誤 台灣大學資訊工程系資訊系統訓練班 10

11 常見 Checked Exceptions 介紹 ClassNotFoundException: 當存取一個不存在或不正確的類別時, 就會發出此例外 CloneNotSupportedException: 嘗試呼叫.Clone(), 但該類別並未支援時, 會發出此例外 DataFormatException: 嘗試將一個資料指定給型態不符的物件時, 就會發出此例外 IOException: 檔案不存在, 或開檔不成功時, 就會發出此例外 台灣大學資訊工程系資訊系統訓練班 11

12 常見 Runtime Exceptions 介紹 例外名稱 例外狀況 ArithmeticException 分母為零時 IndexOutOfBoundsException 索引值超過物件上限時 ArrayIndexOutOfBoundsException 陣列索引值超過上限時 ( 子類別 ) StringIndexOutOfBoundsException 字串索引值超過上限時 ( 子類別 ) NegativeArraySizeException 當宣告陣列時, 索引值為負數時 NullPointerException 呼叫了一個內容為 null 的變數 ArrayStoreException 陣列元素型態與陣列所宣告不合 ClassCastException 類別轉型 (Casting) 失敗 IllegalArgumentException 傳入參數型態不符 NumberFormatException parse 轉型失敗 台灣大學資訊工程系資訊系統訓練班 12

13 Java 的例外處理程序 對於 Java 而言, 每個 Exception 都是一個物件 也就是說, 當程式發生 Exception 時, 就會產生某個特定的 Exception 物件 如果程式在執行時真的產生了異常情況,JVM 會依照一定的程序來處理異常情況, 過程如下 : 1. 中止產生異常情況的指令的執行 2. 產生此異常情況的 Exception 物件 3. 如果設計者有撰寫處理該 Exception 的程式碼, 則交由該區段的程式碼來處 理 ; 如果沒有設計處理的程式碼, 則交由 JVM 處理 4. 如果是由 JVM 來處理 Exception 物件, 則程式會異常終止 台灣大學資訊工程系資訊系統訓練班 13

14 Java 的例外處理範例 以下的範例顯示若沒有使用例外處理的語法時, 程式會在產生例外的敘述上停止執行 : 程式 9-1:Chap9\No Try.java 01: public class NoTry{ 02: public static vod main (String[] args){ 03: int count; 04: 05: String showname[]={ 06: "Alex", 07: "Ivy", 08: "Fanny" 09: }; 10: 11: for (count=0; count<4; count++){ 12: System.out.println(" 第 "+count + 個名字是 :"+showname[count]); 13: } 14: System.out.println(" 程式執行結束 "); 15: } 16: } 程式的執行結果為 : 第 0 個名字是 :Alex 第 1 個名字是 :Ivy 第 2 個名字是 :Fanny Exception in thread "main" java.lang. ArrayIndexOutOfBoundsException: 3 at NoTry.main (Notry.java:12) 台灣大學資訊工程系資訊系統訓練班 14

15 try-catch (1) try-catch 是 Java 程式的例外處理敘述, 該語法中的處理如下 : try { // 可能產生例外的敘述 } catch (ExceptionType E1) { // 產生 ExceptionType 例外時, 要處理的敘述 } catch (Exception E2) { // 產生其他的例外時, 要處理的敘述 } 在語法 try 區段中包含了可能產生例外的程式碼 catch 敘述後以 ( ) 表示需要處理的例外的類別,e1 或是 e2 則是產生的例外物件 catch 可以有多個區段, 可分別用來處理不同的例外情況 當程式進入 try 區段執行敘述時, 如果沒有發生例外, 則程式會在執行完 try 區塊中的敘述後跳過所有的 catch 區段, 繼續往下執行 如果在執行 try 區段中的敘述時產生例外, 則程式會由例外的發生點跳出 try 區段, 並嘗試進入第一個 catch 區段 如果該例外可以由該 catch 後的 Exception 類別處理, 則程式會進入該 catch 區段, 並執行相關的敘述 執行完畢後, 程式不會再執行其他 catch 區段的判斷, 而是直接跳出整個 try-catch 敘述 如果第一個 catch 區段無法處理 ( 或稱為 捕捉 ) 該例外, 程式會繼續執行其他的 catch 區段, 並且判斷 Exception 類別 如果所有的 catch 區塊都無法捕捉程式產生的例外,JVM 會停止該程式的執行 台灣大學資訊工程系資訊系統訓練班 15

16 try-catch (2) 以上一個 NoTry.java 範例加上捕捉例外的機制來示範如何撰寫 try-catch : 程式 9-2:Chap9\Try1.java 01: public class Try1 { 02: public static void main (String[] args){ 03: int count; 04: 05: String showname[] = {"Alex","Ivy","Fanny"}; 06: 07: try{ 08: for (count=0; count<4; count++){ 09: System.out.println(showName[count]); 10: } 11: } catch (ArrayIndexOutOfBoundsException e){ 12: System.out.println(e.toString()); 13: System.out.println(" 陣列索引超範圍 "); 14: } catch (Exception e){ 15: System.out.println(" 其餘的錯誤 " + e.getmessage()); 16: } 17: System.out.println(" 程式執行結束 "); 18: } 19: } 台灣大學資訊工程系資訊系統訓練班 16

17 try-catch (3) 程式的執行結果為 : Alex Ivy Fanny java.lang.arrayindexoutofboundsexception: 3 陣列索引超範圍程式執行結束 範例程式中將列印字串陣列的內容放在 try 區段中, 由上一個範例得知在迴圈執行時會產生 ArrayIndexOutOfBoundsException 的例外 因此在第一個 catch 區段中試圖捕捉該例外, 而 e 是當捕捉到這個例外時所產生的物件 程式的第 12 行使用了 tostring() 方法來列印出該例外的相關訊息 程式執行時也有可能會產生我們在設計時無法得知的例外 因此第二個 catch 區段嘗試捉 Exception 類別的例外, 因為這個類別是所有例外的父類別, 所以如果程式產生了不同於 ArrayIndexOutOfBoundsException 例外而第一個 catch 區段無法捕捉到時, 此區段會負責捕捉其他的例外 我們可以從程式的執行結果得知, 程式在執行完第 11~13 行的例外處理後, 並不會再執行第 14 和 15 行中的敘述而是直接跳離整個 try-catch 區塊, 且執行第 17 行的敘述 台灣大學資訊工程系資訊系統訓練班 17

18 catch 區段的順序 在上述的範例程式中, 如果刪除第 11~13 行的程式, 那執行的結果會是 : Alex Ivy Fanny 其餘的錯誤 3 程式執行結束 其中的 3 是第 15 行程式中的 getmessage() 方法所產生的訊息 必需注意的是因為 Exception 類別是所有例外的父類別, 因此不可以將 Exception 類別放在第一個 catch 區段中, 除非只使用一個 catch 區段 若將上一個範例程式的順序修改 : } catch (Exception e) { System.out.println(" 其餘的錯誤 " + e.getmessage()); } catch (ArrayIndexOutOfBoundsException e) { System.out.println(e.toString()); System.out.println(" 陣列索引超出範圍 "); } 因為 Exception 類別會捕捉所有的 Checked Exception 因此第二個 catch 區段並無作用, 所以該程式在編譯時會產生 exception.java.lang.arrayindexoutofboundsexception has already been caught 的錯誤 台灣大學資訊工程系資訊系統訓練班 18

19 finally 區塊 (1) 程式在執行 try 區段時, 如果產生例外, 則程式會跳到相關的 catch 區段去處理, 並在處理完成後, 再直接跳出 try-catch 區段 也因此 try 區段中產生例外的程式行以下的程式碼並不會被執行 這樣的執行流程可能會產生一些問題 例如 : 如果你打算在 try 區段中撰寫開檔 寫入 關檔等程序, 但程式在進行寫入的動作時產生了例外, 那 關檔 的動作就無法執行了 因此 try-catch 敘述中還提供了 finally 區段來保證某此程式碼一定可以執行 只要設計了 try-catch 機制, finally 區段是一個不論例外是否發生, 它都一定會執行的一個區段 如果你打算在 try 區段中撰寫開檔, 寫入 關檔等程序, 那可以將開檔 寫入的動作放在 try 區段中, 而將 關檔 的動作寫在 finally 區段中, 以確定在 寫入 的動作產生了例外時, 還可以關閉開啟的檔案 要是你擔心如果在 開檔 的動作就產生例外, 而程式在 finally 區段中無法關閉未開啟的檔案時, 還可以在 finally 區段中再設計 try-catch 區段來捕捉這項例外 台灣大學資訊工程系資訊系統訓練班 19

20 finally 區塊 (2) 參考以下的範例, 並了解 finally 區段的執行情形 : 程式 9-3:Chap9/try2.java 01:public class Try2 { 02: public static void main(string[] args){ 03: int i, j, result; 04: 05: i = 100; 06: j = 0; 07: 08: try{ 09: result = i / j; 10: } catch (ArithmeticException e){ 11: System.out.println(" 除數不得為零 "); 12: } catch (Exception e){ 13: System.out.println(" 其餘的錯誤 "); 14: } finally { 15: System.out.println(" 執行 finally 區段 "); 16: } 17: System.out.println(" 程式執行結束 "); 18: } 19: } 台灣大學資訊工程系資訊系統訓練班 20

21 finally 區塊 (3) 程式的執行結果為 : 除數不得為零執行 finally 區段程式執行結束 範例程式的第 6 行中, 特地將 j 的值設定為 0, 因此程式第 9 行執行時會產生 ArithmeticException 的例外 在執行完第 11 行的敘述後, 程式會再執行第 行的 finally 區段的內容, 最後再執行第 17 行的程式碼 台灣大學資訊工程系資訊系統訓練班 21

22 finally 區塊 (4) 修改第 6 行的敘述改為 j = 10, 雖然不會有例外產生, 但程式仍然會執行第 14~15 行 程式 9-3:Chap9/try2.java 01:public class Try2 { 02: public static void main(string[] args){ 03: int i, j, result; 04: 05: i = 100; 06: j = 10; 07: 08: try{ 09: result = i / j; 10: } catch (ArithmeticException e){ 11: System.out.println(" 除數不得為零 "); 12: } catch (Exception e){ 13: System.out.println(" 其餘的錯誤 "); 14: } finally { 15: System.out.println(" 執行 finally 區段 "); 16: } 17: System.out.println(" 程式執行結束 "); 18: } 19: } 因此, 執行的結果會是 : 執行 finally 區段程式執行結束 台灣大學資訊工程系資訊系統訓練班 22

23 finally 區塊 (5) 雖然 try-catch 機制中 finally 是不管例外是否產生它都一定會執行的區段, 但是在特殊的情況下 finally 區段仍然有可能會無法執行完該區段中的所有程式碼 唯一會導致 finally 區段不執行的情況是 JVM 不再執行, 例如 : 呼叫 System.exit(0) 或是電腦當機 如果以上述的範例為例, 如果我們在 finally 區段中加上 System.exit(0) 的敘述, 如下列所示 : finally { System.exit(0); System.out.println(" 執行 finally 區段 "); } 那程式執行結果就會變成 : 除數不得為零 實際上該程式在執行完 System.exit(0) 時就已經執行完畢了, 所以 finally 區段中的第二行敘述當然就不會再被執行了 台灣大學資訊工程系資訊系統訓練班 23

24 finally 區塊 (6) 最後, 我們將 finally 區段做個總整理, 如果有下列的程式碼 : // 敘述一 try { // 敘述二 } catch (Exception e) { // 敘述三 } finally { // 敘述四 } 如果有以下的情況發生, 敘述四執行的狀況分別為 : 1. 如果敘述一產生例外, 則敘述四不會執行 2. 不管敘述二是否產生例外, 敘述四都會執行 3. 不管敘述三是否產生例外, 敘述四都會執行 台灣大學資訊工程系資訊系統訓練班 24

25 throws 敘述 (1) Java 程式語言要求 programmer 必需自行處理可能產生 Checked Exception 的程式碼 但其實當例外產生時, 你也可以不要使用 try-catch 機制立即處理它 可以取代的作法是 : 將它 丟 (throws) 出來給另一支程式處理 如果要使用這種方法, 則必需使用 throws 關鍵字 參考以下的範例 : 程式 9-4:Chap9/Throws1.java 01:public class Throws1 { 02: public static void main(string[] args){ 03: int a = 10, b = 0; 04: double result = 0; 05: try{ 06: result = calculate(a, b); 07: } catch (ArithmeticException e){ 08: System.out.println(" 除數不得為零 "); 09: } catch (Exception e){ 10: System.out.println(" 其他的例外 "); 11: } 12: System.out.println("result 的值為 :" + result); 13: System.out.println(" 程式執行結束 "); 14: } 15: 16: public static double calculate(int i, int j) throws ArithmeticException{ 17: return i/j; 18: } 19: } 台灣大學資訊工程系資訊系統訓練班 25

26 throws 敘述 (2) 程式執行結果為 : 除數不得為零 result 的值為 0 程式執行結束 注意範例程式中第 16 行 calculate 方法的宣告方式 該方法會傳回兩數相除的結果, 預估該方法可能產生除數為零的情況 但在 calculate 方法中, 我們並沒有撰寫捕捉例外的程式碼, 而是使用了 throws 關鍵字將例外丟出 此時呼叫該方法的程式區段就必需撰寫 try-catch 來捕捉可能產生的例外 這就是第 5 到第 11 行程式使用 try-catch 的原因 請注意 : 使用 throws 並不代表方法一定會丟出例外 範例程式中是因為我們特地將除數設定為 0,calculate 方法才會丟出例外 請自行將第 3 行程式中的 b 設定為非 0 的數值, 例如 :1 程式的執行結果會是 : result 的值為 :10.0 程式執行結束 台灣大學資訊工程系資訊系統訓練班 26

27 throws 敘述 (3) 方法中的程式碼在執行的過程中可能會產生不只一種類型的例外, 你可以使用逗號將各種例外區隔開來以便處理不同類型的例外 例如 : public static double calculate(int i, int j) throws ArithmeticException, Exception{ // 相關程式碼 ; } 或者也可以直接將所有可能產生的例外物件都轉型成 Exception 物件, 例如 : public static double calculate (int i, int j) throws Exception{ // 相關程式碼 ; } 範例程式中如果直接將 ArithmeticException 的例外物件轉型為 Exception 的例外物件, 程式的執行結果仍會是相同的有一點必需要知道的是 : Throws1.java 中的 calculate() 方法丟出來的 ArithmeticException 例外是屬 Runtime Exception 這類型的例外也可以不需要自行捕捉, 程式也可以通過編譯 因此即使 main() 方法中只有 : double result = calculate (a, b) System.out.println(" 程式執行結束 "); 這兩行敘述, 程式依然可以通過編譯 只是當例外產生時程式會不正常的終止 台灣大學資訊工程系資訊系統訓練班 27

28 throws 敘述 (4) 如果方法中丟出來的例外是屬於 Checked Exception, 在呼叫該方法時就不能不去處理它 否則, 程式在編譯時就會產生 unreported exception 的編譯錯誤 例如 : 程式 9-5:Chap9/Throws2.java 01:public class Throws2 { 02: public static void main(string[] args){ 03: trytoaccess(); 04: System.out.println(" 程式執行結束 "); 05: } 06: 07: public static void trytoaccess() 08: throws IOException{ 09: System.out.println(" 嘗試使用 Method"); 10: } 11: } 則必需在呼叫 trytoaccess() 方法時使用 try-catch 程式才能通過編譯 例如 : try{ trytoaccess(); } catch (IOException e){} 台灣大學資訊工程系資訊系統訓練班 28

29 Call Stack 機制 在宣告方法時, 如果使用了 throws 關鍵字將可能產生的例外丟出, 那麼呼叫此方法的類別就必需使用 try-catch 來補捉例外 這種將例外一直往上層丟出, 直到該例外被處理為止的機制就稱為 Call Stack 機制 但如果呼叫此方法的類別又沒有處理產生的例外時, 程式會發生什麼樣的情況呢? 請參考下圖 : 假定主程式 main() 呼叫 A( ) 方法, 而 A( ) 方法中又呼叫了 B( ) 方法, 而 B( ) 方法中又呼叫了 C( ) 方法, 但目前, 各方法中都沒有設計 try-catch 的機制 如果 C( ) 方法中產生了例外, 此例外會往上丟給 B( ) 方法處理 如果無法處理, 該例外會再丟給 A( ) 方法來處理 同樣的, A( ) 如果無法處理, 該例外會再丟給 main( ) 方法來處理 最後則由 JVM 來處理接到的例外並且中止程式的執行 台灣大學資訊工程系資訊系統訓練班 29

30 8-2 自訂例外 台灣大學資訊工程系資訊系統訓練班 30

31 使用 throw 關鍵字 (1) 雖然 Java 語言已經提供了相當多的例外類別, 但有時候, 為了設計出更 User Friendly 的程式, 我們可能需要自己設計例外處理的機制 在探討如何自定例外之前, 我們要先了解 throw 關鍵字的使用 throw 關鍵字用在方法的內部, 請不要和用於方法宣告時的 throws 關鍵字混為一談 如果在方法內部想要丟出例外的類別物件時需使用 throw 關鍵字 為了能夠自定例外類別, 我們先了解 Exception 類別產生物件的方式 常用的 Exception 類別的建構子有 : Exception() 建構子 Exception(String message) Exception (String message, Throwable cause) Exception(Throwable cause) 作用建立一個 Exception 建立一個 Exception 物件, 並指定例外訊息為 message 建立一個 Exception 物件, 並指定例外訊息為 message, 同時將產生例外的原因 cause 傳入 建立一個 Exception 物, 同時將產生例外的原因 cause 傳入 throw 關鍵字可以用來丟出例外物件, 它可以丟出 Java 內部的例外物件, 也可以丟出自定的例外物件,throw 的語法如下 : throw 例外物件 ; throw new Exception (" 自定的例外訊息 "); // 丟出 Java 例外物件 // 丟出匿名的例外物件 台灣大學資訊工程系資訊系統訓練班 31

32 使用 throw 關鍵字 (2) 程式 9-6 : Chap9\Throw1.java 01: public class Throw1{ 02: public static void main(string[] args) { 03: trytocalculate(10, 0); 04: trytocalculate(10, 2); 05: } 06: 07: public static void trytocalculate(int x, int y) { 08: if (y == 0) { 09: try { 10: throw new Exception("Divided by Zero!!!"); 11: }catch (Exception e) { 12: System.out.println(e.toString()); 13: } 14: } else { 15: System.out.println("The Result is : " + x / y); 16: } 17: } 18: } 執行的結果為 : 台灣大學資訊工程系資訊系統訓練班 32

33 使用 throw 關鍵字 (3) 範例程式在第 10 行使用了 throw 來丟出一個自定的例外物件, 因為 throw 會產生例外物件, 所以程式必需使用 try-catch 來捕捉產生的例外 Exception 中的 除數不得為零!!! 的訊息會在例外物件產生時傳入該物件中 你也可以不需要直接處理這個例外物件, 但是要再將這個物件丟出來, 例如改寫範例程式的第 11~13 行為 : catch (Exception e) { throw e; } 如果是用這樣的處理方式, 則必需要有另一個程式來呼叫 main 方法, 並且在該程式中使用 try-catch 來處理例外 台灣大學資訊工程系資訊系統訓練班 33

34 自定例外類別 (1) 01: class MyException extends Exception{ 02: private int value; 03: MyException (int value){ 04: this.value = value; 05: } 06: public String tostring(){ 07: String s = " 本程式執行無效 \n" + 08: " 錯誤代碼為 " + value + " \n" + 09: " 請將此代碼告知管理人員 \n"; 10: return s; 11: } 12: } MyException 類別繼承自 Exception 類別, 第 3 行的建構子需要傳入一個整數值當作是自定的錯誤代碼 程式的第 6~11 行改寫了 tostring() 方法, 新的 tostring() 方法會顯示出錯誤代碼及相關的訊息 台灣大學資訊工程系資訊系統訓練班 34

35 自定例外類別 (2) 再來, 以下的程式碼示範如何丟出 MyException 類別的例外訊息 : 01: public static void trytocalculates (int x, int y){ 02: if (y == 0){ 03: try{ 04: throw new MyException(0); 05: } catch (MyException e){ 06: System.out.println(e.toString()); 07: } 08: } else { 09: System.out.println(" 結果為 : " + x / y); 10: } 11: } trytocalculates(int x, int y) 方法會計算兩數相除的結果, 但是除數 y 不可以為 0, 如果 y 的值為 0, 在程式的第 4 行會丟出 MyException 類別的例外, 並指定錯誤代碼為 0 程式的第 5 行會捕捉這個例外物件, 並且在第 6 行利用 tostring() 方法顯示錯誤訊息 台灣大學資訊工程系資訊系統訓練班 35

36 自定例外類別 (3) main() 的內容 : 程式 9-7:Chap9/Throws2.java 01: public class Throw2{ 02: public static void main (String[] args) { 03: trytocalculates(10, 0); 04: trytocalculates(10, 2); 05: } 06: } 第 3 行的程式碼由於傳入的參數會導致除數為 0 的情況, 該行程式會引發們定的 MyException 例外物件, 並顯示自訂的錯誤訊息 程式的執行結果為 : 台灣大學資訊工程系資訊系統訓練班 36

37 課堂練習 PT81 例外練習 (PT81.java): 設計一個程式在執行時需要輸入一個整數數值 請考慮可能產生的例外情況, 例如 : 未輸入數值, 數值格式不正確等情形 如果例外產生, 請使用 throw 的方式直接丟出例外, 並顯示相關訊息 如果沒有例外產生, 請利用該數值計算正方形的面積 台灣大學資訊工程系資訊系統訓練班 37

38 8-3 檔案處理 台灣大學資訊工程系資訊系統訓練班 38

39 串流 串流 (Stream) 將各類儲存媒體 (Floppy, HDD, CD- ROM ) 內的資料, 統一成固定格式, 以利讀取與寫入 輸入串流 輸出串流 台灣大學資訊工程系資訊系統訓練班 39

40 File 類別 (1) 在 JAVA 中, 檔案的讀 寫 在螢幕上顯示訊息 記憶體的存取, 或是網路資源的使用等動作, 都被視為 串流 (Stream) 串流 可以被視為資料輸出 輸入的通道 JAVA 將處理串流資料的相關類別放於 java.io 套件之中, 需事先引用這個套件 在實際探討串流資料處理之前, 我們先來了解 File 類別 嚴格說來, 它並不屬於串流的類別, 因為該類別中的方法並不會牽涉到檔案的讀寫, 但該類別會被用來提供檔案或是目錄的相關資訊, 包括了檔案的建立, 大小 修改日期 存取權限等資訊 等等 File 類別包含了三種型態的建構子 : 建構子 File(String pathname, String filename) File(String pathname) File(Object parent, String child) 作用 以上層的路徑名稱 parent, 並以 filename 字串的內容為檔案名稱, 建立新的 File 物件 將 pathname 的內容轉換為絕對路徑, 並在該路徑下建立新的 File 物件 以上層的路徑物件 parent, 以 child 字串的內容為子目錄的路徑或名稱, 建立新的 File 物件 台灣大學資訊工程系資訊系統訓練班 40

41 File 類別 (2) 在目前的目錄下建立一個參考到 test.txt 檔案的 File 物件 : File f1 = new File("test.txt"); File 類別也可以用來處理目錄, 例如 : File f2 = new File("c:\\TestDir"); 如果是在 Windows 系統下, 該程式碼會產生一個指向 c:\testdir 目錄的物件 會使用到 \\ 是因為在 Windows 系統下的目錄符號 \ 剛好是 Java 中跳脫字元的前置符號, 所以使用了 \\ 來代替實際的 \ 符號 當然, 如果你是要在 Linux 平台下執行 Java 程式, 那目錄符號要更改為 / 你也可以直接參考到指定目錄下的檔案, 例如在 windows 系統下以下的兩行程式都會參考到 c:\testdir\test.txt 檔案 : File f3 = new File("c:\\TestDir\\test.txt"); File f4 = new File("c:\\TestDir","test.txt"); 或者產生一個參考到目錄的 File 物件, 再利用該物件參考到檔案, 例如 : File f5 = new File("c:\\TestDir"); File f6 = new File( f5, "test.txt"); 台灣大學資訊工程系資訊系統訓練班 41

42 File 類別的方法 (1) File 類別也提供相當多的方法來處理檔案或是目錄, 有些方法單用於目錄或是檔案, 有些方法則是可以共用, 請參考下表 : 方法作用 boolean canread() 判斷是否可以根據提供的路徑讀取指定的檔案 如果可以, 則傳回 true, 如果不可以, 則傳回 false boolean canwrite() 判斷是否可以根據提供的路徑寫檔 如果可以, 則傳回 ture, 如果不可以, 則傳回 false boolean exists() 判斷指定的路徑下是否有指定的檔案 File getabsolutefile() String getabsolutepath() String getname() String getparent() boolean isdirectory() boolean isfile() long lastmodified() long length() File[] listfiles() boolean renameto(file dest) 根據 File 物件參考的內容, 取得指定的檔案參考 根據 File 物件參考的內容, 取得檔案的絕對路徑 根據 File 物件參考的內容, 取得目錄或是檔案的名稱, 但不會包含路徑根據 File 物件參考的內容, 取得上一層的路徑名稱 根據 File 物件參考的內容, 判斷是否為目錄 根據 File 物件參考的內容, 判斷是否為檔案 根據 File 物件參考的內容, 取得該檔案最後被修改的日期, 傳回毫秒值, 並以 1970 年一月一日零時為計算基準, 如果傳回 OL, 代表該檔案不存在根據 File 物件參考的內容, 取得檔案的長度 根據 File 物件參考的內容, 取得該路徑下所有的檔案名稱 將 File 物件參考的內容更改為指定的 dest 名稱 台灣大學資訊工程系資訊系統訓練班 42

43 File 類別的方法 (2) 通常我們會先用 isfile 方法來判斷物件是否為檔案, 再利用相關的方法來操作其他的需求 : 程式 10-2:Chap 10\File 2.java 01: import java.io.file; 02: import java.util.date; 03: 04: class File2{ 05: public static void main(string[] args) { 06: File f = new File("c:\\Work\\Chap10\\Test.java"); 07: System.out.println("f 物件是否存在 :"+ f.exists()); 08: System.out.println("f 物件是否為檔案 :"+ f.isfile()); 09: System.out.println("f 物件是否可以讀取 :"+ f.canread()); 10: System.out.println("f 物件是否可以寫入 :"+ f.canwrite()); 11: System.out.println("f 物件的實際名稱為 :"+ f.getname()); 12: System.out.println("f 物件的修改日期為 :"+ new Date(f.1astModified()); 13: System.out.println("f 物件的實際大小為 :"+ f.length() +"Bytes"); 14: System.out.println("f 物件的絕對路徑為 :"+ f.getabsolutepath()); 15: System.out.println("f 物件的路徑為 :"+ f.getparent()); 16: } 17: } 程式的執行結果為 : f 物件是否存在 :true f 物件是否為檔案 :true f 物件是否可以讀取 :true f 物件是否可以寫入 :true f 物件的實際名稱為 :Test.java f 物件的修改日期為 :Sun Oct 30 12:20:30 CST 2005 f 物件的實際大小為 :104 Bytes f 物件的絕對路徑為 :c:\work\chap10\test.java f 物件的路徑為 :c:\work\chap10 台灣大學資訊工程系資訊系統訓練班 43

44 File 類別的方法 (3) 用 java 模擬 Windows 的 dir 指令, 或 Unix 的 ls 指令 : 程式 10-3:Chap 10\File 3.java 01: import java.io.file; 02: 03: 04: class File3{ 05: public static void main(string[] args) { 06: File f = new File("C:\\java\\"); 07: File[] lists = f.listfiles(); 08: int i ; 09: 10: for (i = 0 ; i<lists.legngth-1 ; i++) ; 11: if (lists[i].isdirectory()) { 12: System.out.println("<Dir>\t"); 13: } else { 14: System.out.println(lists[i].getName()+"\t"+lists[i].length()+"Bytes"); 15: } 16: } 17: } 18: } 執行的結果類似 : File1.class File1.java File2.class File2.java 680 Bytes 319 Bytes 1587 Bytes 729 Bytes 台灣大學資訊工程系資訊系統訓練班 44

45 File 類別的方法 (4) 更改檔名 : import java.io.*; public class FileRename { public static void main(string[] args) { File fs = new File(args[0]); File fd = new File(args[1]); } } if (fs.exists()) { if (!fd.exists()) { if (fs.renameto(fd)) { System.out.println(fs.getName() + " 已改名為 " + fd.getname()); System.out.println("1 file(s) has been renamed!"); } } } 台灣大學資訊工程系資訊系統訓練班 45

46 字元串流的處理 JAVA 的緩衝處理 緩衝資料流 (Buffered Stream) 藉由一塊記憶體緩衝區來連結 I/O 資料流, 並讓資料的操作能夠增加效能 相關類別 InputStreamReader BufferedReader 台灣大學資訊工程系資訊系統訓練班 46

47 BufferedReader (1) 我們也可以使用 BufferedReader 來儲存自鍵盤輸入的資料, 藉由該類別中的 readline 方法可以一次讀取整行的資料, 請參考以下的範例 : 程式 10-8:Chap 10\ InputStreamReader 2.java 01: import java.io.*; 02: 03: public class InputStreamReader 2 { 04: public static void main(string[] args) { 05: InputStreamReader ir = new InputStreamReader(System.in); 06: BufferedReader br = new BufferedReader(ir); 07: float salary; 08: 09: try{ 10: System.out.print(" 請輸入月薪 :"); 11: salary = Float.parseFloat(br.readLine()); 12: System.out.print(" 你的年薪是 :"+salary*12); 13: } catch (IOException e) { 14: System.out.println(e.toString()); 15: } catch (Exception e) { 16: System.out.println(e.toString()); 17: } 18: } 19: } 台灣大學資訊工程系資訊系統訓練班 47

48 BufferedReader (2) 程式的執行結果為 : 請輸入月薪 :35 你的年薪是 :420.0 程式的第 6 行將 InputStreamReader 物件轉為 BufferedReader 物件, 而在程式的第 11 行則使用 readline 方法來讀取輸入的整行資料 由於讀入的資料是 String 型態的資料, 所以, 再使用 Float.parseFloat() 方法來將資料轉為 float 型態 台灣大學資訊工程系資訊系統訓練班 48

49 課堂練習 PT82 串流練習 (PT82.java): 以 InputStreamReader 寫一個程式可以分別詢問使用者他的 : 名字 年齡 性別 輸入完後再將結果印在畫面 : Hi 名字 ( 先生 / 小姐 ) 你好, 你今年年齡歲 台灣大學資訊工程系資訊系統訓練班 49

50 讀寫檔案 JAVA 中讀寫檔案的方法有許多種 在此介紹英文與中日韓文語系中最常使用的兩種類別工具 : 英文讀寫 : DataInputStream / DataOutputStream 中日韓文讀寫 : FileReader / FileWriter 台灣大學資訊工程系資訊系統訓練班 50

51 Input/Output Stream DataInputStream 和 DataOutputStream 類別是位元資料處理的串接類別 DataInputStream 與 DataOutputStream 須藉由 FileInputStream 與 FileOutputStream 對檔案做存取 假設有一檔案 file1.txt 內容為 : 台灣大學資訊工程系資訊系統訓練班 51

52 DataInputStream 以下的範例示範如何使用 DataInputStream 類別, 並讀取 file1.txt 檔案中的資料 : 程式 10-14:Chap 10\ DataInputStream1.java import java.io.*; class DataInputStream1 { public static void main(string[] args) throws IOException { FileInputStream fis = new FileInputStream("file1.txt"); DataInputStream dis = new DataInputStream(fis); int i; } } while((i = dis.read())!= -1) { System.out.print((char) i); } dis.close(); fis.close(); 程式的執行結果為 : You will always on my mind.?_??????f??±x???n?? 台灣大學資訊工程系資訊系統訓練班 52

53 DataOutputStream 以下的範例示範如何使用 DataOutputStream 類別, 並將資料寫入 File2.txt 檔案中 : 程式 10-15:Chap 10\ DataOutputStream 1.java 01: import java.io.*; 02: 03: public class DataOutputStream 1 { 04: public static void main (String[] args) throws IOException { 05: FileOutputStream fos = new FileOutputStream("file2.txt"); 06: DataOutputStream dos = new DataOutputStream(fos); 07: 08: byte[] c = {'J', 'a', 'v', 'a'}; 09: dos.write( c); 10: 11: fos.close(); 12: dos.close(); 13: } 14: } 範例程式的第 5 行建構出一個 FileOutputStream 物件, 並將此物件傳給 DataOutputStream 物件 程式的第 9 行使用 write() 方法將資料寫入 File2.txt 檔案中 台灣大學資訊工程系資訊系統訓練班 53

54 FileReader/FileWrite 類別 不論是 FileInputStream FileOutputStream DataInputSteam DataOutputStream 類別, 它們都是針對位元組資料所設計的類別 對於亞洲體系的文字, 由於使用的是雙位元的資料, 這些類別並無法很完善的處理這些類型的資料 如果要處理雙位元的資料, 我們必需使用 FileReader BufferedReader FileWrite BufferedWriter 等類別 處理方式請參考下圖 : File 類別 File 類別 台灣大學資訊工程系資訊系統訓練班 54

55 FileReader 類別 以下的範例示範如何使用 FileReader 類別, 並讀取 file1.txt 檔案中的資料 : 程式 10-16:Chap 10\ FileReader1.java 01: import java.io.*; 02: 03: public class FileReader1 { 04: public static void main (String[] args) throws IOException { 05: File f = new File("file1.txt"); 06: FileReader fr = new FileReader(f); 07: int i; 08: 09: while((i = fr.read())!=-1) { 10: 11: System.out.print((char) i); 12: } 13: fr.close(); 14: } 15: } 程式執行的結果為 : You will always on my mind. 北風傳來了熟悉的聲音 台灣大學資訊工程系資訊系統訓練班 55

56 FileWriter 類別 以下的範例示範如何使用 FileWrite 類別, 並將字串寫入 file3.txt 檔案中的資料 : 程式 10-17:Chap 10\ FileWriter 1.java 01: import java.io.*; 02: 03: public class FileWriter 1 { 04: public static void main (String[] args) throws IOException { 05: File f = new File("file3.txt"); 06: FileWriter fw = new FileWriter(f); 07: 08: String str = "Java is easy to learn.\n"; 10: 11: fw.write(str); 12: fw.close(); 13: } 14: } 台灣大學資訊工程系資訊系統訓練班 56

57 課堂練習 PT83 檔案輸出入練習 (PT83.java): 假定某位學生的紀錄如下 : 姓名 :name, 字串型態, 值為 Alex 數學成績 :mathrecord,int 型態, 值為 95 國文成績 :chnrecord,int 型態, 值為 90 英文成績 :engrecord,int 型態, 值為 94 請建構串流物件 out, 並將該筆記錄寫入 record.txt 檔案中, 再將 record.txt 檔案的內容讀出, 並顯示在螢幕上 台灣大學資訊工程系資訊系統訓練班 57

58 8-4 序列化處理 台灣大學資訊工程系資訊系統訓練班 58

59 序列化處理 (1) 序列化 : 將物件寫進串流中 ObjectInputStream 反序列化 : 將被寫進串流中的物件讀出 ObjectOutputStream 要序列化某個類別, 則該類別須實作 Serializable 介面 台灣大學資訊工程系資訊系統訓練班 59

60 序列化的處理 (2) 程式 10-18:Chap 10\ Employee.java 01: import java.io.*; 02: 03: public class Employee implements Serializable { 04: private String name; 05: private String ID; 06: private float salary; 07: 08: Employee(String name, String ID, float salary) { 09: this.name = name; 10: this.id = ID; 11: this.salary = salary; 12: } 13: public String getname(){ 14: return name; 15: } 16: public String getid() { 17: return ID; 18: } 19: public float getsalary() { 20: return salary; 21: } 22: } 台灣大學資訊工程系資訊系統訓練班 60

61 序列化的處理 (3) 程式 10-19:Chap 10\ WriteData.java 01: import java.io.*; 02: 03: public class WriteData { 04: public static void main(string[] args) { 05: Employee[] s = new Employee[2]; 06: 07: s[0] = new Employee("Alex","001", f); 08: System.out.println(s[0].getName()); 09: System.out.println(s[0].getID()); 10: System.out.println(s[0].getSalary()); 11: 12: s[1] = new Employee("Ivy","002", f); 13: System.out.println(s[1].getName()); 14: System.out.println(s[1].getID()); 15: System.out.println(s[1].getSalary()); 16: 17: try{ 18: FileOutputStream fs = new FileOutputStream("Employee.txt"); 19: ObjectOutputStream out = new ObjectOutputStream(fs); 20: out.writeobject(s); 21: out.close(); 22: fs.close(); 23: } catch (IOException e){ 24: System.out.println(e.toString()); 25: } 26: } 27: } 台灣大學資訊工程系資訊系統訓練班 61

62 序列化的處理 (4) 程式的執行結果為 : Alex Ivy 程式執行後你會在目錄下找到 Employee.txt 文字檔, 但無法直接瀏覽該檔的內容 範例程式的第 5 行宣告一個 Employee 陣列, 可用來儲存 2 筆資料 而程式的第 7~15 行分別建立 Employee 物件, 並且將物件的內容顯示在螢幕上 程式的第 18~22 行是本範例程式的重點 第 18 行宣告了一個 FileOutputStream 物件, 用來將內容寫入 Employee.txt 檔案中 再於第 19 行程式中將 FileOutputStream 物件傳遞給 ObjectOutputStream, 並建立新的 ObjectOutputStream 物件 第 20 行程式中, 使用 ObjectOutputStream 物件的 WriteObject 方法將 Employee 陣列的內容寫入 Employee.txt 檔案中 寫入的方式很簡單, 但請注意, 程式中寫入 Employee 陣列的資料, 因此在讀取資料時, 也必需將檔案的內容輸入 Employee 陣列中, 否則會因型態不符而產生 classcastexception 的例外 台灣大學資訊工程系資訊系統訓練班 62

63 序列化的處理 (5) 程式 10-20:Chap 10\ ReadData.java 01: import java.io.*; 02: 03: public class ReadData { 04: public static void main(string[] args) { 05: try{ 06: FileInputStream fs = new FileInputStream("Employee.txt"); 07: ObjectInputStream in = new ObjectInputStream(fs); 08: 09: Employee[] s = (Employee[] ) in.readobject(); 10: 11: for(int i = 0 ; i<s.length; i++) { 12: System.out.println(s[i].getName()); 13: System.out.println(s[i].getID()); 14: System.out.println(s[i].getSalary()); 15: } 16: in.close(); 17: fs.close(); 18: } catch (Exception e) { 19: System.out.println( e.tostring()); 20: } 21: } 22: } 台灣大學資訊工程系資訊系統訓練班 63

64 序列化的處理 (6) 程式的執行結果為 : Alex Ivy 台灣大學資訊工程系資訊系統訓練班 64

65 回家作業 HW8 (1) 1. 庫存系統練習 (HW81.java): 假設有一個庫存系統, 在存貨類別的處理方面, 庫存的計算可能會有兩例外狀態 : 一種是庫存數量小於 0(NegativeStockException), 另一種是需要提出的貨品數量大於庫存量 (ShortStockExctpion) 請設計上述兩個例外類別, 並使用 throw 來測試例外 2. 存款利息計算程式 (HW82.java) : 假定有以下的資料型態 : String name; float premium; float irate; // 儲存姓名的資料 // 代表銀行存款的本金數額 // 代表銀行的存款利率 請設計一個程式, 使用者可以由鍵盤依次輸入上述的資料, 輸入完成後, 再將輸入的內容顯示在螢幕上, 並依輸入的本金和利率, 再計算一年的存款利息 台灣大學資訊工程系資訊系統訓練班 65

66 回家作業 HW8 (2) 3. 猜數字程式 v2 (HW83.java): 請改進 HW61.java 的猜數字程式 以 BufferedReader 的方法讓使用者可以一直猜, 直到猜對正確答案為止 台灣大學資訊工程系資訊系統訓練班 66

67 繳交回家作業 PT8 ( 課堂練習 ) 與 HW8 ( 回家作業 ) 請一起繳交 把相關 *.java 檔案以 zip 或 rar 壓縮並取名為 學號.zip 或 學號.rar 並附件到 中寄到 : 主旨 :[JAVA245][hw][8] 姓名 收件人 :allan@csie.org Deadline: 下一次上課前 台灣大學資訊工程系資訊系統訓練班 67

chp6.ppt

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

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 - 投影片ch13

Microsoft Word - 投影片ch13 Java2 JDK5.0 教學手冊第三版洪維恩編著博碩文化出版書號 pg20210 第十三章例外處理 本章學習目標了解什麼是例外處理認識例外類別的繼承架構認識例外處理的機制學習如何撰寫例外類別 例外處理 13-2 13.1 例外的基本觀念 在執行程式時, 經常發生一些不尋常的狀況 例如 : (1) 要開啟的檔案不存在 (2) 陣列的索引值超過了陣列容許的範圍 (3) 使用者輸入錯誤 Java 把這類不尋常的狀況稱為

More information

投影片 1

投影片 1 資料庫管理程式 ( 補充教材 -Part2) 使用 ADO.NET 連結資料庫 ( 自行撰寫程式碼 以實現新增 刪除 修改等功能 ) Private Sub InsertButton_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles InsertButton.Click ' 宣告相關的 Connection

More information

Microsoft Word - 投影片ch14

Microsoft Word - 投影片ch14 Java2 JDK5.0 教學手冊第三版洪維恩編著博碩文化出版書號 pg20210 第十四章檔案處理 本章學習目標認識串流學習檔案的開啟與關閉學習如何處理文字檔學習如何處理二進位檔 檔案處理 14-2 14.1 關於串流 串流可分為 輸入串流 (input stream) 與 輸出串流 (output stream) 兩種 下圖說明了串流如何做為檔案處理的橋樑 : stream 資料 input stream

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

KillTest 质量更高 服务更好 学习资料 半年免费更新服务

KillTest 质量更高 服务更好 学习资料   半年免费更新服务 KillTest 质量更高 服务更好 学习资料 http://www.killtest.cn 半年免费更新服务 Exam : 310-055Big5 Title : Sun Certified Programmer for the Java 2 Platform.SE 5.0 Version : Demo 1 / 22 1. 11. public static void parse(string str)

More information

運算子多載 Operator Overloading

運算子多載 Operator Overloading 多型 Polymorphism 講師 : 洪安 1 多型 編譯時期多型 ( 靜態多型 ) function overloading 如何正確呼叫同名的函數? 利用參數個數與型態 operator overloading 其實同 function overloading 執行時期多型 ( 或動態多型 ) 如何正確呼叫不同物件的相同名稱的成員函數 利用繼承與多型 2 子類別與父類別物件間的指定 (assignment)

More information

Microsoft Word - JAVA Programming Language Homework VI_ans.doc

Microsoft Word - JAVA Programming Language Homework VI_ans.doc JAVA Programming Language Homework VI: Threads & I/O ID: Name: 1. When comparing java.io.bufferedwriter to java.io.filewriter, which capability exists as a method in only one of the two? A. Closing the

More information

Java Access 5-1 Server Client Client Server Server Client 5-2 DataInputStream Class java.io.datainptstream (extends) FilterInputStream InputStream Obj

Java Access 5-1 Server Client Client Server Server Client 5-2 DataInputStream Class java.io.datainptstream (extends) FilterInputStream InputStream Obj Message Transition 5-1 5-2 DataInputStream Class 5-3 DataOutputStream Class 5-4 PrintStream Class 5-5 (Message Transition) (Exercises) Java Access 5-1 Server Client Client Server Server Client 5-2 DataInputStream

More information

while ((ch = fr.read())!= -1) { System.out.print((char) ch); fr.close(); 例 3: 用 BufferedReader 读 TXT 文件 public class FileReaderDemo3 { public static v

while ((ch = fr.read())!= -1) { System.out.print((char) ch); fr.close(); 例 3: 用 BufferedReader 读 TXT 文件 public class FileReaderDemo3 { public static v 第九章 Java I/O 流操作 实验目的 (1) 掌握文本文件的读写方法 (2) 掌握 InputStream OutputStream 的使用方法 (3) 熟悉 FileReader,BufferedReader,InputStreamReader 和 FileWriter, BufferedWriter, PrintWriter 的使用方法 ; 理解使用过滤流实现数据项的读写 :DataOutputStream,

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

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

KillTest 质量更高 服务更好 学习资料 半年免费更新服务

KillTest 质量更高 服务更好 学习资料   半年免费更新服务 KillTest 质量更高 服务更好 学习资料 http://www.killtest.cn 半年免费更新服务 Exam : 1Z0-854 Title : Java Standard Edition 5 Programmer Certified Professional Upgrade Exam Version : Demo 1 / 12 1.Given: 20. public class CreditCard

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

The Embedded computing platform

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

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

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

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

3.1 num = 3 ch = 'C' 2

3.1 num = 3 ch = 'C' 2 Java 1 3.1 num = 3 ch = 'C' 2 final 3.1 final : final final double PI=3.1415926; 3 3.2 4 int 3.2 (long int) (int) (short int) (byte) short sum; // sum 5 3.2 Java int long num=32967359818l; C:\java\app3_2.java:6:

More information

White Sketchpad PowerPoint Presentation

White Sketchpad PowerPoint Presentation 第五章 檔案存取 電商三乙 4A355001 郭雅如 4A355063 周宛萱 5-1-1 取得檔案名稱 但排除副檔名 5-1-2 取得路徑資訊

More information

1.JasperReport ireport JasperReport ireport JDK JDK JDK JDK ant ant...6

1.JasperReport ireport JasperReport ireport JDK JDK JDK JDK ant ant...6 www.brainysoft.net 1.JasperReport ireport...4 1.1 JasperReport...4 1.2 ireport...4 2....4 2.1 JDK...4 2.1.1 JDK...4 2.1.2 JDK...5 2.1.3 JDK...5 2.2 ant...6 2.2.1 ant...6 2.2.2 ant...6 2.3 JasperReport...7

More information

Swing-02.pdf

Swing-02.pdf 2 J B u t t o n J T e x t F i e l d J L i s t B u t t o n T e x t F i e l d L i s t J F r a m e 21 2 2 Swing C a n v a s C o m p o n e n t J B u t t o n AWT // ToolbarFrame1.java // java.awt.button //

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

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

目 录 实 验 一 : 熟 悉 Java 开 发 环 境... 1 实 验 二 : 类 与 面 向 对 象... 7 实 验 三 : 继 承 和 多 态... 13 实 验 四 : 异 常 处 理... 18 实 验 五 : 流 文 件 及 基 于 文 本 的 应 用... 23

目 录 实 验 一 : 熟 悉 Java 开 发 环 境... 1 实 验 二 : 类 与 面 向 对 象... 7 实 验 三 : 继 承 和 多 态... 13 实 验 四 : 异 常 处 理... 18 实 验 五 : 流 文 件 及 基 于 文 本 的 应 用... 23 Java 程 序 设 计 实 验 指 导 书 商 丘 学 院 计 算 机 科 学 与 技 术 学 院 张 艳 晓 目 录 实 验 一 : 熟 悉 Java 开 发 环 境... 1 实 验 二 : 类 与 面 向 对 象... 7 实 验 三 : 继 承 和 多 态... 13 实 验 四 : 异 常 处 理... 18 实 验 五 : 流 文 件 及 基 于 文 本 的 应 用... 23 实 验

More information

(TestFailure) JUnit Framework AssertionFailedError JUnit Composite TestSuite Test TestSuite run() run() JUnit

(TestFailure) JUnit Framework AssertionFailedError JUnit Composite TestSuite Test TestSuite run() run() JUnit Tomcat Web JUnit Cactus JUnit Java Cactus JUnit 26.1 JUnit Java JUnit JUnit Java JSP Servlet JUnit Java Erich Gamma Kent Beck xunit JUnit boolean JUnit Java JUnit Java JUnit Java 26.1.1 JUnit JUnit How

More information

《大话设计模式》第一章

《大话设计模式》第一章 第 1 章 代 码 无 错 就 是 优? 简 单 工 厂 模 式 1.1 面 试 受 挫 小 菜 今 年 计 算 机 专 业 大 四 了, 学 了 不 少 软 件 开 发 方 面 的 东 西, 也 学 着 编 了 些 小 程 序, 踌 躇 满 志, 一 心 要 找 一 个 好 单 位 当 投 递 了 无 数 份 简 历 后, 终 于 收 到 了 一 个 单 位 的 面 试 通 知, 小 菜 欣 喜

More information

用手機直接傳值不透過網頁連接, 來當作搖控器控制家電 ( 電視遙控器 ) 按下按鍵發送同時會回傳值來確定是否有送出 問題 :1. 應該是使用了太多 thread 導致在傳值上有問題 2. 一次按很多次按鈕沒辦法即時反應

用手機直接傳值不透過網頁連接, 來當作搖控器控制家電 ( 電視遙控器 ) 按下按鍵發送同時會回傳值來確定是否有送出 問題 :1. 應該是使用了太多 thread 導致在傳值上有問題 2. 一次按很多次按鈕沒辦法即時反應 專題進度 老師 : 趙啟時老師 學生 : 陳建廷 2013/10/13 用手機直接傳值不透過網頁連接, 來當作搖控器控制家電 ( 電視遙控器 ) 按下按鍵發送同時會回傳值來確定是否有送出 問題 :1. 應該是使用了太多 thread 導致在傳值上有問題 2. 一次按很多次按鈕沒辦法即時反應 程式碼 : package com.example.phone; import java.util.arraylist;

More information

Microsoft Word - 投影片ch03

Microsoft Word - 投影片ch03 Java2 JDK5.0 教學手冊第三版洪維恩編著博碩文化出版書號 pg20210 第三章變數與資料型態 本章學習目標認識變數與常數認識 Java 的基本資料型態學習如何進行資料型態轉換學習如何由鍵盤輸入資料 變數與資料型態 3-2 Java 的資料型態分為 : 與 原始資料型態 (primitive type) 非原始資料型態 (non-primitive type) 原始資料型態包括了整數與浮點數等型態

More information

2009年9月全国计算机等级考试二级Java真题及答案

2009年9月全国计算机等级考试二级Java真题及答案 2009 年 9 月 全 国 计 算 机 等 级 考 试 二 级 Java 真 题 及 答 案 [ 录 入 者 :NCRE100 时 间 :2009-10-08 19:41:34 作 者 : 来 源 :NCRE100.com 浏 览 :1421 次 ] 2009 年 9 月 全 国 计 算 机 等 级 考 试 二 级 笔 试 试 卷 Java 语 言 程 序 设 计 ( 考 试 时 间 90 分 钟,

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

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

Microsoft Word - 01.DOC

Microsoft Word - 01.DOC 第 1 章 JavaScript 简 介 JavaScript 是 NetScape 公 司 为 Navigator 浏 览 器 开 发 的, 是 写 在 HTML 文 件 中 的 一 种 脚 本 语 言, 能 实 现 网 页 内 容 的 交 互 显 示 当 用 户 在 客 户 端 显 示 该 网 页 时, 浏 览 器 就 会 执 行 JavaScript 程 序, 用 户 通 过 交 互 式 的

More information

一、

一、 考試時間 : 1 小時 30 分座號 : 全五頁第一頁 注意 : 禁止使用電子計算器 不必抄題, 作答時請將試題題號及答案依照順序寫在試卷上, 於本試題上作答者, 不予計分 一 就下列 Java 程式片斷中加入一個 for 迴圈, 使其印出右側結果 (15 分 ) public class AllNumbers number square cube 0 0 0 public static void

More information

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

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

More information

詞 彙 表 編 號 詞 彙 描 述 1 預 約 人 資 料 中 文 姓 名 英 文 姓 名 身 份 證 字 號 預 約 人 電 話 性 別 2 付 款 資 料 信 用 卡 別 信 用 卡 號 信 用 卡 有 效 日 期 3 住 房 條 件 入 住 日 期 退 房 日 期 人 數 房 間 數 量 入

詞 彙 表 編 號 詞 彙 描 述 1 預 約 人 資 料 中 文 姓 名 英 文 姓 名 身 份 證 字 號 預 約 人 電 話 性 別 2 付 款 資 料 信 用 卡 別 信 用 卡 號 信 用 卡 有 效 日 期 3 住 房 條 件 入 住 日 期 退 房 日 期 人 數 房 間 數 量 入 100 年 特 種 考 試 地 方 政 府 公 務 人 員 考 試 試 題 等 別 : 三 等 考 試 類 科 : 資 訊 處 理 科 目 : 系 統 分 析 與 設 計 一 請 參 考 下 列 旅 館 管 理 系 統 的 使 用 案 例 圖 (Use Case Diagram) 撰 寫 預 約 房 間 的 使 用 案 例 規 格 書 (Use Case Specification), 繪 出 入

More information

[Short Essay:] 1. (5 points) Use state-of-memory diagram to describe the differences between x and y declared as follows: double[] x = new double[4];

[Short Essay:] 1. (5 points) Use state-of-memory diagram to describe the differences between x and y declared as follows: double[] x = new double[4]; Introduction to Programming (II) Spring 2008, Final Exam Name: ID Number: [True/False:] (5 points each) If your answer is "false", you have to provide correct reasons. Otherwise, no points will be given.

More information

EJB-Programming-3.PDF

EJB-Programming-3.PDF :, JBuilder EJB 2.x CMP EJB Relationships JBuilder EJB Test Client EJB EJB Seminar CMP Entity Beans Value Object Design Pattern J2EE Design Patterns Value Object Value Object Factory J2EE EJB Test Client

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

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

任務二 : 產生 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

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

java2d-4.PDF

java2d-4.PDF 75 7 6 G r a d i e n t P a i n t B a s i c S t r o k e s e t P a i n t ( ) s e t S t o r k e ( ) import java.awt.*; import java.awt.geom.*; public class PaintingAndStroking extends ApplicationFrame { public

More information

untitled

untitled 1 行 行 行 行.NET 行 行 類 來 行 行 Thread 類 行 System.Threading 來 類 Thread 類 (1) public Thread(ThreadStart start ); Name 行 IsAlive 行 行狀 Start 行 行 Suspend 行 Resume 行 行 Thread 類 (2) Sleep 行 CurrentThread 行 ThreadStart

More information

Microsoft Word - 投影片ch11

Microsoft Word - 投影片ch11 Java2 JDK5.0 教學手冊第三版洪維恩編著博碩文化出版書號 pg20210 第十一章抽象類別與介面 本章學習目標認識抽象類別學習介面的使用認識多重繼承與介面的延伸 抽象類別與介面 11-2 11.1 抽象類別 抽象類別的目的是要依據它的格式來修改並建立新的類別 11.1.1 定義抽象類別 定義抽象類別的語法如下 : abstract class 類別名稱 { 宣告資料成員 ; // 定義抽象類別

More information

運算子多載 Operator Overloading

運算子多載 Operator Overloading 函數樣板 (Function Template) 與 類別樣板 (Class Template) 講師 : 洪安 1 資料結構與 C++ 程式設計進階班 為何需要通用函數? (1/2) int abs(int x) { return (x>0)?x:-x; 取名困難不好記 float fabs(float x) { return (x>0)?x:-x; complex cabs(complex x)

More information

96年特種考試第一次司法人員考試試題解答

96年特種考試第一次司法人員考試試題解答 106 年公務人員特種考試警察人員 一般警察人員考試及 106 年特種考試交通事業鐵路人員考試試題 考試別 : 鐵路人員考試 等別 : 員級考試 類科 ( 別 ): 資訊處理 科目 : 程式設計概要 考試時間 :1.5 小時 一 就下列 Java 程式片斷中加入一個 for 迴圈, 使其印出右側結果 (15 分 ) public class AllNumbers number square cube

More information

Microsoft Word - 投影片ch15

Microsoft Word - 投影片ch15 Java2 JDK5.0 教學手冊第三版洪維恩編著博碩文化出版書號 pg20210 第十五章多執行緒 本章學習目標認識執行緒學習如何建立執行緒學習如何管理執行緒認識執行緒的同步處理 多執行緒 15-2 15.1 認識執行緒 多執行緒 的機制可以同時執行多個程式區塊 app15_1 是單一執行緒的範例 : 01 // app15_1, 單一執行緒的範例 02 class CTest 03 { 04 private

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

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

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

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

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

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

資料結構之C語言重點複習

資料結構之C語言重點複習 鏈結串列自編教材 ( 一 ) 本教材 ( 一 ) 目標問題 : 每次以亂數產生一 [0,1000] 之整數值, 若該值 >100, 則以同方式繼續產生下一亂數值, 若該值

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

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

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

More information

软件工程文档编制

软件工程文档编制 实训抽象类 一 实训目标 掌握抽象类的定义 使用 掌握运行时多态 二 知识点 抽象类的语法格式如下 : public abstract class ClassName abstract void 方法名称 ( 参数 ); // 非抽象方法的实现代码 在使用抽象类时需要注意如下几点 : 1 抽象类不能被实例化, 实例化的工作应该交由它的子类来完成 2 抽象方法必须由子类来进行重写 3 只要包含一个抽象方法的抽象类,

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

1 4 1.1 4 1.2..4 2..4 2.1..4 3.4 3.1 Java.5 3.1.1..5 3.1.2 5 3.1.3 6 4.6 4.1 6 4.2.6 5 7 5.1..8 5.1.1 8 5.1.2..8 5.1.3..8 5.1.4..9 5.2..9 6.10 6.1.10

1 4 1.1 4 1.2..4 2..4 2.1..4 3.4 3.1 Java.5 3.1.1..5 3.1.2 5 3.1.3 6 4.6 4.1 6 4.2.6 5 7 5.1..8 5.1.1 8 5.1.2..8 5.1.3..8 5.1.4..9 5.2..9 6.10 6.1.10 Java V1.0.1 2007 4 10 1 4 1.1 4 1.2..4 2..4 2.1..4 3.4 3.1 Java.5 3.1.1..5 3.1.2 5 3.1.3 6 4.6 4.1 6 4.2.6 5 7 5.1..8 5.1.1 8 5.1.2..8 5.1.3..8 5.1.4..9 5.2..9 6.10 6.1.10 6.2.10 6.3..10 6.4 11 7.12 7.1

More information

書面

書面 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 5.4 互動功能畫面 程式碼請參考附件-程式三 在進入互動頁面時 會執行setAllText()依寵物狀態數值來 設定狀態文字與頭像 並且依心情決定是否要不要播放音效 觸摸的區域 由於是自己寫的 view 所以並未透過xml來設置 而是透過Layut.addview()來動態新增

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

x MapReduce A Italic URL Constant width Constant width bold Constant width italic 這個圖示代表提示或建議 這個圖示代表一般註解

x MapReduce A Italic URL Constant width Constant width bold Constant width italic 這個圖示代表提示或建議 這個圖示代表一般註解 Java R Python Java Java Java x MapReduce A Italic URL Constant width Constant width bold Constant width italic 這個圖示代表提示或建議 這個圖示代表一般註解 第一章 I/O double[][] int[] String[] List 2 Map JavaScript Object Notation

More information

D C 93 2

D C 93 2 D9223468 3C 93 2 Java Java -- Java UML Java API UML MVC Eclipse API JavadocUML Omendo PSPPersonal Software Programming [6] 56 8 2587 56% Java 1 epaper(2005 ) Java C C (function) C (reusability) eat(chess1,

More information

使用手冊

使用手冊 使用手冊 版權所有 2013 年 Microtek International, Inc. 保留所有權利 商標 Microtek MII MiiNDT ScanWizard Microtek International, Inc. Windows Microsoft Corporation 重要須知 Microtek Microtek Windows Microsoft Windows I49-004528

More information

Python a p p l e b e a r c Fruit Animal a p p l e b e a r c 2-2

Python a p p l e b e a r c Fruit Animal a p p l e b e a r c 2-2 Chapter 02 變數與運算式 2.1 2.1.1 2.1.2 2.1.3 2.1.4 2.2 2.2.1 2.2.2 2.2.3 type 2.2.4 2.3 2.3.1 print 2.3.2 input 2.4 2.4.1 2.4.2 2.4.3 2.4.4 2.4.5 + 2.4.6 Python Python 2.1 2.1.1 a p p l e b e a r c 65438790

More information

第1章

第1章 第 12 章 資料檔案管理 1 本章提要 12.1 前言 12.2 資料讀取 Reader/InputStream 12.2.1. Reader/InputStream 12.2.2. System 類別 12.3 資料建檔 Writer/OutputStream 12.4 資料修改 RandomAccessFile 12.5 變更及移動檔案 12.6 檔案列表 12.7 後記 2 12.1 前言

More information

The golden pins of the PCI card can be oxidized after months or years

The golden pins of the PCI card can be oxidized after months or years Q. 如何在 LabWindows/CVI 編譯 DAQ Card 程式? A: 請參考至下列步驟 : 步驟 1: 安裝驅動程式 1. 安裝 UniDAQ 驅動程式 UniDAQ 驅動程式下載位置 : CD:\NAPDOS\PCI\UniDAQ\DLL\Driver\ ftp://ftp.icpdas.com/pub/cd/iocard/pci/napdos/pci/unidaq/dll/driver/

More information

内容介绍 6.1 任务预览 6.2 异常 6.3 异常种类与层次结构 6.4 异常处理代码块 try-catch-finally 6.5 throw 语句与 throws 子句 6.6 自定义异常类 6.7 异常处理代码块嵌套 6.8 错误与断言 6.9 本章小结 6.10 实训 6: 除法运算程序

内容介绍 6.1 任务预览 6.2 异常 6.3 异常种类与层次结构 6.4 异常处理代码块 try-catch-finally 6.5 throw 语句与 throws 子句 6.6 自定义异常类 6.7 异常处理代码块嵌套 6.8 错误与断言 6.9 本章小结 6.10 实训 6: 除法运算程序 第 6 章除法运算 异常处理 能力目标 : 学会使用 try-catch-finally 代码块处理异常 学会使用 throw 语句主动抛出异常, 使用 throws 子句从方法声明中抛出异常 理解自定义异常类, 了解断言语句 能运用异常处理机制编写整数 实数除法运算程序 内容介绍 6.1 任务预览 6.2 异常 6.3 异常种类与层次结构 6.4 异常处理代码块 try-catch-finally

More information

Android Service

Android Service Android Service- 播放音樂 建國科技大學資管系 饒瑞佶 2013/7 V1 Android Service Service 是跟 Activity 並行 一個音樂播放程式若沒使用 Service, 即使按 home 鍵畫面離開之後, 音樂還是照播 如果再執行一次程式, 新撥放的音樂會跟先前撥放的一起撥, 最後程式就會出錯 執行中的程式完全看不到! 但是, 寫成 Service 就不同了

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

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

OOP with Java 通知 Project 6: 5 月 30 日晚 9 点

OOP with Java 通知 Project 6: 5 月 30 日晚 9 点 OOP with Java Yuanbin Wu cs@ecnu OOP with Java 通知 Project 6: 5 月 30 日晚 9 点 复习 异常处理 语法 抛出异常 : throw 处理异常 : try, catch 异常对象 : Exception 类的子类 从方法中抛出异常 方法的异常说明 :throws 中断当前方法的执行, 返回抛出的异常对象, 在该方法的调用路径上寻找合适的

More information

Learning Java

Learning Java Java Introduction to Java Programming (Third Edition) Prentice-Hall,Inc. Y.Daniel Liang 2001 Java 2002.2 Java2 2001.10 Java2 Philip Heller & Simon Roberts 1999.4 Java2 2001.3 Java2 21 2002.4 Java UML 2002.10

More information

(6) 要 求 付 款 管 理 员 从 预 订 表 中 查 询 距 预 订 的 会 议 时 间 两 周 内 的 预 定, 根 据 客 户 记 录 给 满 足 条 件 的 客 户 发 送 支 付 余 款 要 求 (7) 支 付 余 款 管 理 员 收 到 客 户 余 款 支 付 的 通 知 后, 检

(6) 要 求 付 款 管 理 员 从 预 订 表 中 查 询 距 预 订 的 会 议 时 间 两 周 内 的 预 定, 根 据 客 户 记 录 给 满 足 条 件 的 客 户 发 送 支 付 余 款 要 求 (7) 支 付 余 款 管 理 员 收 到 客 户 余 款 支 付 的 通 知 后, 检 2016 年 上 半 年 软 件 设 计 师 考 试 真 题 ( 下 午 题 ) 下 午 试 题 试 题 一 ( 共 15 分 ) 阅 读 下 列 说 明 和 图, 回 答 问 题 1 至 问 题 4, 将 解 答 填 入 答 题 纸 的 对 应 栏 内 说 明 某 会 议 中 心 提 供 举 办 会 议 的 场 地 设 施 和 各 种 设 备, 供 公 司 与 各 类 组 织 机 构 租 用 场

More information

Microsoft Word - 投影片ch22

Microsoft Word - 投影片ch22 Java2 JDK5.0 教學手冊第三版洪維恩編著博碩文化出版書號 pg20210 第二十二章網路程式設計 本章學習目標認識網路學習如何取得文件的內容資訊學習如何建立 socket 連線學習如何建立 TCP 伺服程式與客戶程式 網路程式設計 22-2 22.1 網址與 InetAddress 類別的使用 IP 位址是以 4 個 8 bits 的數值, 以 10 進位來表示, 用來區分網路上的每一台電腦

More information

新版 明解C++入門編

新版 明解C++入門編 511!... 43, 85!=... 42 "... 118 " "... 337 " "... 8, 290 #... 71 #... 413 #define... 128, 236, 413 #endif... 412 #ifndef... 412 #if... 412 #include... 6, 337 #undef... 413 %... 23, 27 %=... 97 &... 243,

More information

ZW1.PDF

ZW1.PDF C. A. R. Hoare, The Emperor s Old Clothes Java C++ Objective C Eiffel Smalltalk Mesa Lisp Java Java Java C++ Java 10 Item 1 Item 2 String.equals() == 1 1 Item 3 Java C++ Java Item 4 Java Item 5 Java Item

More information

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

OOP with Java 通知 Project 6: 6 月 6 日晚 9 点 OOP with Java Yuanbin Wu cs@ecnu OOP with Java 通知 Project 6: 6 月 6 日晚 9 点 复习 异常处理 语法 抛出异常 : throw 处理异常 : try, catch 异常对象 : Exception 类的子类 从方法中抛出异常 方法的异常说明 :throws 中断当前方法的执行, 返回抛出的异常对象, 在该方法的调用路径上寻找合适的

More information

PowerPoint 簡報

PowerPoint 簡報 本周未安排實作輔導 預定 : 下周六 迴圈 LOOP 應用 判斷質數 (Prime number) 求兩個整數的最大公因數 (greatest common divisor, GCD) 判斷迴文 (palindrome) 搶答!! Q1 : 印出結果? int s,x; s=0; for(x=1;x

More information

Autodesk Product Design Suite Standard 系統統需求 典型使用用者和工作流程 Autodesk Product Design Suite Standard 版本為為負責建立非凡凡產品的設計師師和工程師, 提供基本概念設計計和製圖工具, 以取得令人驚驚嘆

Autodesk Product Design Suite Standard 系統統需求 典型使用用者和工作流程 Autodesk Product Design Suite Standard 版本為為負責建立非凡凡產品的設計師師和工程師, 提供基本概念設計計和製圖工具, 以取得令人驚驚嘆 Autodesk Product Design Suite Standard 20122 系統統需求 典型使用用者和工作流程 Autodesk Product Design Suite Standard 版本為為負責建立非凡凡產品的設計師師和工程師, 提供基本概念設計計和製圖工具, 以取得令人驚驚嘆的產品設計計 Autodesk Product Design Suite Standard 版本中中包括以下軟體體產品

More information

使用MapReduce读取XML文件

使用MapReduce读取XML文件 使用 MapReduce 读取 XML 文件 XML( 可扩展标记语言, 英语 :extensible Markup Language, 简称 : XML) 是一种标记语言, 也是行业标准数据交换交换格式, 它很适合在系统之间进行数据存储和交换 ( 话说 Hadoop H ive 等的配置文件就是 XML 格式的 ) 本文将介绍如何使用 MapReduce 来读取 XML 文件 但是 Had oop

More information

AutoCAD 用戶如何使用 ArchiCAD

AutoCAD 用戶如何使用 ArchiCAD AutoCAD 用戶如何使用 ArchiCAD AutoCAD用戶如何使用ArchiCAD ( 中文版 ) 由 Scott MacKenzie, Simon Gilbert, Geoffrey Moore Langdon, David Byrnes, Ralph Grabowski 編寫 龍庭資訊有限公司 1/73 - 2. 3. 4. -

More information

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

More information

View:Struts 提 供 了 action form 创 建 form bean, 用 于 在 controller 和 view 间 传 输 数 据 此 外,Struts 提 供 了 自 定 义 JSP 标 签 库, 辅 助 开 发 者 用 JSP 创 建 交 互 式 的 以 表 单 为 基

View:Struts 提 供 了 action form 创 建 form bean, 用 于 在 controller 和 view 间 传 输 数 据 此 外,Struts 提 供 了 自 定 义 JSP 标 签 库, 辅 助 开 发 者 用 JSP 创 建 交 互 式 的 以 表 单 为 基 一 你 对 MVC 的 理 解,MVC 有 什 么 优 缺 点? 结 合 Struts, 说 明 在 一 个 Web 应 用 如 何 去 使 用? 答 : MVC 设 计 模 式 ( 应 用 观 察 者 模 式 的 框 架 模 式 ) M: Model(Business process layer), 模 型, 操 作 数 据 的 业 务 处 理 层, 并 独 立 于 表 现 层 (Independent

More information

9, : Java 19., [4 ]. 3 Apla2Java Apla PAR,Apla2Java Apla Java.,Apla,,, 1. 1 Apla Apla A[J ] Get elem (set A) A J A B Intersection(set A,set B) A B A B

9, : Java 19., [4 ]. 3 Apla2Java Apla PAR,Apla2Java Apla Java.,Apla,,, 1. 1 Apla Apla A[J ] Get elem (set A) A J A B Intersection(set A,set B) A B A B 25 9 2008 9 M ICROEL ECTRON ICS & COMPU TER Vol. 25 No. 9 September 2008 J ava 1,2, 1,2, 1,2 (1, 330022 ; 2, 330022) :,. Apla - Java,,.. : PAR ;Apla - Java ; ;CMP ; : TP311 : A : 1000-7180 (2008) 09-0018

More information

1 Framework.NET Framework Microsoft Windows.NET Framework.NET Framework NOTE.NET NET Framework.NET Framework 2.0 ( 3 ).NET Framework 2.0.NET F

1 Framework.NET Framework Microsoft Windows.NET Framework.NET Framework NOTE.NET NET Framework.NET Framework 2.0 ( 3 ).NET Framework 2.0.NET F 1 Framework.NET Framework Microsoft Windows.NET Framework.NET Framework NOTE.NET 2.0 2.0.NET Framework.NET Framework 2.0 ( 3).NET Framework 2.0.NET Framework ( System ) o o o o o o Boxing UnBoxing() o

More information

<4D6963726F736F667420576F7264202D20C8EDC9E82DCFC2CEE7CCE22D3039C9CF>

<4D6963726F736F667420576F7264202D20C8EDC9E82DCFC2CEE7CCE22D3039C9CF> 全 国 计 算 机 技 术 与 软 件 专 业 技 术 资 格 ( 水 平 考 试 2009 年 上 半 年 软 件 设 计 师 下 午 试 卷 ( 考 试 时 间 14:00~16:30 共 150 分 钟 请 按 下 述 要 求 正 确 填 写 答 题 纸 1. 在 答 题 纸 的 指 定 位 置 填 写 你 所 在 的 省 自 治 区 直 辖 市 计 划 单 列 市 的 名 称 2. 在 答

More information

投影片 1

投影片 1 Chap 8 繼承 抽象類別與介面 8-1 類別的繼承 8-2 介面 8-3 介面的繼承 8-4 抽象類別 8-5 抽象類別與介面 8-6 常數類別 8-1 類別的繼承 8-1-1 類別架構 8-1-2 類別的繼承 8-1-3 覆寫和隱藏父類別的方法 8-1-4 隱藏父類別的成員變數 8-1-5 使用父類別的建構子 8-1-1 類別架構 - 繼承關係 類別的繼承關係可以讓我們建立類別架構, 在 UML

More information

Microsoft Word - ch04三校.doc

Microsoft Word - ch04三校.doc 4-1 4-1-1 (Object) (State) (Behavior) ( ) ( ) ( method) ( properties) ( functions) 4-2 4-1-2 (Message) ( ) ( ) ( ) A B A ( ) ( ) ( YourCar) ( changegear) ( lowergear) 4-1-3 (Class) (Blueprint) 4-3 changegear

More information

二次曲線 人們對於曲線的使用及欣賞 比曲線被視為一種數學題材來探討要早 得多 各種曲線中 在日常生活常接觸的 當然比較容易引起人們的興趣 比如 投擲籃球的路徑是拋物線 盤子的形狀有圓形或橢圓形 雙曲線 是較不常見的 然而根據科學家的研究 彗星的運行軌道是雙曲線的一部 分 我們將拋物線 圓與橢圓 雙曲

二次曲線 人們對於曲線的使用及欣賞 比曲線被視為一種數學題材來探討要早 得多 各種曲線中 在日常生活常接觸的 當然比較容易引起人們的興趣 比如 投擲籃球的路徑是拋物線 盤子的形狀有圓形或橢圓形 雙曲線 是較不常見的 然而根據科學家的研究 彗星的運行軌道是雙曲線的一部 分 我們將拋物線 圓與橢圓 雙曲 -1 圓方程式 第 章 二次曲線 38 二次曲線 人們對於曲線的使用及欣賞 比曲線被視為一種數學題材來探討要早 得多 各種曲線中 在日常生活常接觸的 當然比較容易引起人們的興趣 比如 投擲籃球的路徑是拋物線 盤子的形狀有圓形或橢圓形 雙曲線 是較不常見的 然而根據科學家的研究 彗星的運行軌道是雙曲線的一部 分 我們將拋物線 圓與橢圓 雙曲線合稱為圓錐曲線 因為在平面坐標 系中 其對應的方程式均為二元二次式

More information

Microsoft PowerPoint - ch15.ppt

Microsoft PowerPoint - ch15.ppt Exception Handling Exception handling Exception Indication of problem during execution E.g., divide by zero Chained exceptions 1 Exception-Handling Overview Uses of exception handling Process exceptions

More information

Microsoft PowerPoint - 14Threads.ppt

Microsoft PowerPoint - 14Threads.ppt Threads Outline Introduction to Threads How to create Thread extend Thread implement Runnable interface Synchronization What is thread? 定義 : 程式的執行軌跡 Single Thread Multi-Thread 依序執行 int x, y; int z; x =

More information

Microsoft Word - 11.doc

Microsoft Word - 11.doc 除 錯 技 巧 您 將 於 本 章 學 到 以 下 各 項 : 如 何 在 Visual C++ 2010 的 除 錯 工 具 控 制 下 執 行 程 式? 如 何 逐 步 地 執 行 程 式 的 敘 述? 如 何 監 看 或 改 變 程 式 中 的 變 數 值? 如 何 監 看 程 式 中 計 算 式 的 值? 何 謂 Call Stack? 何 謂 診 斷 器 (assertion)? 如 何

More information

1. 访 问 最 新 发 行 公 告 信 息 jconnect for JDBC 7.0 1. 访 问 最 新 发 行 公 告 信 息 最 新 版 本 的 发 行 公 告 可 以 从 网 上 获 得 若 要 查 找 在 本 产 品 发 布 后 增 加 的 重 要 产 品 或 文 档 信 息, 请 访

1. 访 问 最 新 发 行 公 告 信 息 jconnect for JDBC 7.0 1. 访 问 最 新 发 行 公 告 信 息 最 新 版 本 的 发 行 公 告 可 以 从 网 上 获 得 若 要 查 找 在 本 产 品 发 布 后 增 加 的 重 要 产 品 或 文 档 信 息, 请 访 发 行 公 告 jconnect for JDBC 7.0 文 档 ID:DC74874-01-0700-01 最 后 修 订 日 期 :2010 年 3 月 2 日 主 题 页 码 1. 访 问 最 新 发 行 公 告 信 息 2 2. 产 品 摘 要 2 3. 特 殊 安 装 说 明 2 3.1 查 看 您 的 jconnect 版 本 3 4. 特 殊 升 级 指 导 3 4.1 迁 移 3

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

附录J:Eclipse教程

附录J:Eclipse教程 附 录 J:Eclipse 教 程 By Y.Daniel Liang 该 帮 助 文 档 包 括 以 下 内 容 : Eclipse 入 门 选 择 透 视 图 创 建 项 目 创 建 Java 程 序 编 译 和 运 行 Java 程 序 从 命 令 行 运 行 Java Application 在 Eclipse 中 调 试 提 示 : 在 学 习 完 第 一 章 后 使 用 本 教 程 第

More information

FY.DOC

FY.DOC 高 职 高 专 21 世 纪 规 划 教 材 C++ 程 序 设 计 邓 振 杰 主 编 贾 振 华 孟 庆 敏 副 主 编 人 民 邮 电 出 版 社 内 容 提 要 本 书 系 统 地 介 绍 C++ 语 言 的 基 本 概 念 基 本 语 法 和 编 程 方 法, 深 入 浅 出 地 讲 述 C++ 语 言 面 向 对 象 的 重 要 特 征 : 类 和 对 象 抽 象 封 装 继 承 等 主

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