程設一
配分 項目 備註 正課 20% 實習課 平常表現10%、統一作業10% 統一會考 60% 筆試30%、上機考30% 自學檢則(加分) 10% [時間地點]:中午12:00 or 下午17:00在主顧322 or 主顧324 [計分方式]: 一顆星每題加0.5分,兩顆星每題加1分,最高加到10分
綱要 各種程式語言 英打 靜宜賽碼場 JDK安裝 Eclipse for JAVA JAVA程式語言介紹
各種程式語言 第一代 機器語言 第二代 組合語言 第三代 高階語言(程序導向語言) Ex: FORTRAN、COBOL、PASCAL、Ada、C、BASIC、Perl 第四代 極高階語言(物件導向語言) Ex: C++、JAVA、VB、PHP、C#、Python、smalltalk 第五代 LISP、PROLOG
程式的用途 自用 協助處理反覆的例行性工作 破壞 病毒、木馬 每天將c開頭的單字換成a開頭的單字 寫一個daemon程式來取代人工
程式的開發 編譯器 Source code execute 選擇一個開發平台 EX: JDK e.g. 賽碼場
程式的開發– 實例 C、C++:編譯 JAVA:編譯+直譯 載入階段 執行階段 compiler linker loader Source code Object code Execute code RAM 執行 .obj .exe (binary code) JAVA:編譯+直譯 靜態宣告:載入階段時執行,ex: int a[10]; 動態宣告:執行階段時執行,ex: int* a = new int[10]; compiler Source code Byte code JVM .class interpreter Compiler:將高階程式翻譯成組合語言程式 Linker: 連結函式庫 Loader: 載入到memory
英打 https://10fastfingers.com/typing-test/english 一分鐘測試英打速度
常見的JAVA程式開發軟體 1、Eclipse 2、IntelliJ IDEA 3、Jcreator 4、靜宜賽碼場
Example - Eclipse Project Package Java檔 Java檔 Java檔 Class Package method method Class
Example - Eclipse Project name Package name
靜宜賽碼場 網頁版 沒辦法寫程式 用來加課程、看資訊 軟體版 可寫程式
靜宜賽碼場 – 註冊 註冊 http://coding.pu.arping.me/
靜宜賽碼場 – 註冊 輸入可收到信的email
靜宜賽碼場 – 註冊
靜宜賽碼場 – 註冊 填寫「學習家族組名」 Ex: 資工一A Ex: 資訊工程系 Ex: 中文姓名 Ex: 410616594
靜宜賽碼場 – 註冊
靜宜賽碼場 – 加選課程 登入「網頁版」賽碼場來加選課程 1 確定是否真的有登入成功 3 4 2
靜宜賽碼場 – 軟體版 路徑: 執行:
靜宜賽碼場 – 軟體版 6 1 3 4 2 5
練習 kb_practice_helloJava
JDK( Java SE Development Kits) http://www.oracle.com/technetwork/java/javase/downloads/index.html 手機、嵌入式系統 大型網站開發 JAVA JAVA ME JAVA EE 1 JAVA SE (JDK) 一般應用程式適用
2 3 點選安裝
檢查是否有這選項
靜宜賽碼場 -評判伺服器訊息 Local端程式正確 (尚未通過server端驗證) 點選
靜宜賽碼場 -評判伺服器訊息 Server端程式正確 (已通過server端驗證且上傳) 當local端驗證無誤,則點選
靜宜賽碼場 -評判伺服器訊息 語法出錯
靜宜賽碼場 – 評判伺服器訊息 沒有輸出 (可能沒印出data)
靜宜賽碼場 – 評判伺服器訊息 輸出的格式有錯
靜宜賽碼場 – 評判伺服器訊息 執行時間超時 (可能你的程式進入無限迴圈)
JAVA的程式儲存 1、你的程式碼會儲存在java檔內 2、你的java檔會儲存在資料夾(專案)內 (賽碼場檔名固定取名main.java) 內存 可切割
JAVA的程式結構 與檔名同名 存在此包中 class method method2 class2 Note: 寫入你的程式流程 1、JAVA檔的檔名要跟內部的其中一個class名稱相同,並且為public class 2、一個java檔內只能有一個public class 3、一個project只會有一個main method,會從多個java檔中找尋一個main method為程式的進入點 ----------------------------------- Import Java提供的類別 method2 class2 Note: 1、JAVA程式由多個class所組成 2、class由多個method所組成
JAVA的程式結構 class method method class method method class method method (程式的進入點) method method class method 1、JAVA檔的檔名要跟內部的其中一個class名稱相同,並且為public class 2、一個java檔內只能有一個public class 3、一個project只會有一個main method,會從多個java檔中找尋一個main method為程式的進入點 method class method method
Example 1、有幾個class? 幾個method? 2、是否可改寫成如下 ? 3、程式的執行流程?
Solution 1、執行流程 1 2 3 4 6 5 7 2、1個class 3個method
Example 可改成method的寫法
寫程式的準則 – 排版 Note: 1、分號:表示一行的結束 2、分層 (1)按enter 或 (2)利用tab鍵 寫入你的程式碼 1、JAVA檔的檔名要跟內部的其中一個class名稱相同,並且為public class 2、一個java檔內只能有一個public class 3、一個project只會有一個main method,會從多個java檔中找尋一個main method為程式的進入點 Note: 1、分號:表示一行的結束 2、分層 (1)按enter 或 (2)利用tab鍵
Example 要排版 有排版: 沒排版: 按tab鍵 來縮排
寫程式的準則 – 命名 變數的命名須有意義 變數的名稱開頭習慣小寫 不好 好
寫程式的準則 – 命名 有效的變數: 1、開頭不能是數字 2、不可夾帶下列符號 「-」 「:」 Note: 關鍵字:藍色 識別字:黑色
練習 – 排版 kb_Recursive_HanoiTower
輸出 [語法] 放你的data e.g. 換行 e.g. 不換行
e.g. 合併輸出 利用「+」運算子
練習 basic_output
變數宣告 Def:利用變數來儲存data值 語法: [變數型態] [變數名稱] = data值; e.g.
Data type Ex:
Data type range 2147483647
相異型態資料的合併 利用「+」運算子 Ex: 將字串、整數合併印出 Ex: 將多個浮點數合併印出
「=」運算子 Def:Assign的意思,即給值,並非相等的意思 e.g.
Example 宣告、給值 分開寫 宣告、給值 寫在一起 多個變數 可利用「+」運算子來合併各data印出
Example a = ???
練習 basic_dataType
輸入 [語法] e.g. 讀取一列: 讀取一個:
Scanner Method:
Scanner 宣告 使用
如何除錯? 如何除錯 ? 利用「印出值」的方式 如何確保s的值符合預期 ?
練習 kb_inputOutput1 輸入三個data, 第一個為int型態的data 第二個為double型態的data 第三個為String型態的data 使用Scanner取得此三個data,並且 印出此三個data
Operator(運算子) 前置加 後置加
資料型態的對應 兩個整數相除結果 得整數 兩個數相除,若其中一數為浮點數得浮點數
資料型態的對應 Case1: Case2:
Example 改成int height才對 what's wrong ??
練習 CP1Easy01:攝氏轉華氏
如何限制小數點位數 無窮小數 無窮小數
如何限制小數點位數 語法: format EX: 僅顯示小數第二位
練習 CP1Easy04
% 應用:切割整數 Ex: 右到左切割
/ 應用:切割整數 Ex: 左到右切割
練習 basic_money
++、-- 前置加:這一行就加 後置加:下一行才加
練習 若有兩個整數x=1、y=2,如何運用第三個變數z,將x與y兩數的內容交換? kb_swap
if、else 用途:條件判斷,用在2選1的情況 語法: Ex : 不是做case1就是做case2
else if 用途:條件判斷,用在n選1的情況(n>=3) 搭配if、else使用 語法: 4選1, 從case1~case4選其中執行
練習 輸入2個整數a、b,若a>=b或a==10則執行a-b並印出,否則執行a+b並印出 kb_practice_ifelse
練習 kb_practice_ifelse2 考試成績有六個級別 A B C D E F 分別對應分數 90+ 80+ 70+ 60+ 60 60- 利用if else技巧,輸入分數印出對應的級別 kb_practice_ifelse2
練習 輸入一個整數,若是奇數,輸出字串Odd,否則輸出字串Even。 P1Test-023
Example
Example 下列兩者的差異?
if…else VS else if if…else:2選1 else if: n選1,
練習 Calculate Body Mass Index (BMI)
練習 Given three numbers x, y, and z, find out if x, y, and z can represent the lengths of the sides of a triangle. kb_FindOutIfTriangle
練習 1032-P1-下9週-Test1-判斷閏年 (30 points) 1、西元年份是400的倍數 認知: 1、西元年份是400的倍數 2、西元年份是4的倍數但不是100的倍數 閏年
統一作業
統一作業
統一作業
練習 kb_guessNum
switch 語法:
Example
程設二
迴圈 種類 for while do … while
for 語法: Ex1: Ex2:
For執行流程 功能:印出5次字串 1、 2、 4、 3、
累加 sum=1 sum=3
練習 kb_practice_for1 輸入一個整數n 1、若n值大於5,則印出 ”Fail” 2、否則利用for迴圈方式印出n次 ”hello”
練習 kb_practice_for2 輸入一個整數n , 1、若n<1 或 n>100則輸出"Fail"
練習 P1Test-018 輸入一個整數n 利用for迴圈計算n!的值
練習 kb_game
for 如何不執行完迴圈就先行離開? Ex: 「break」 執行到第5次就離開迴圈
for 如何不執行完迴圈內部程式碼就執行下一次迴圈? Ex: 「continue」 在迴圈執行到第三次時才會印出”Bye”
練習 kb_break
HW P1Test-006 輸入兩個整數,計算兩個整數之間所有奇數的和
練習 kb_gcd 輸入兩個整數,計算兩個整數的最大公因數
分析 [case1] input: 6 8 output: 2 [case1] input: 8 6 output: 2 [法一] Step1: 新增一個gcd變數 Step2: 用for迴圈,遞增方式,i初值=1,i終值=max 判斷兩數是否可被i整除,若可整除則gcd=i [法二] 用for迴圈,遞減方式,i初值=任取輸入的其中一數,i終值=1 判斷兩數是否可被max整除,若可整除則離開for
巢狀迴圈 - for Def:兩層for迴圈 Ex:
Example
練習 輸入直角三角型的高h,建立出高h的*符號直角三角形 input: 3 output: * ** ***
練習 建立一個高度=n且由*所構成的等腰三角形 input: 5 output: * *** ***** ******* *********
練習 kb_99multipyTable 顯示某區間的99乘法表 input: 2 5 output: 2x1 2x2 ......
HW 找出M到N之間的所有質數 e.g. 輸入:5 20 輸出:5 7 11 13 17 19
迴圈種類 for while do-while ex: break 強制離開迴圈 Continue 略過迴圈此回合 常搭配下列使用
while迴圈 語法: e.g.
do-while迴圈 語法: e.g.
練習 kb_practice_dowhile1 利用for、while、do-while三種寫法求得「1+2+...+10,但不含5」結果值
練習 利用do-while完成「反向輸出一個正整數」, 若此正整數超出int範圍,則輸出"out of range" kb_practice_dowhile2 利用do-while完成「反向輸出一個正整數」, 若此正整數超出int範圍,則輸出"out of range" input: 123456 output:654321
String type Def:一種字串type 1、非原生type 2、可使用它的method e.g.
String methods 比較兩字串大小:compareTo(String anotherString) 回傳值: 小於return -1 否則return正整數 e.g.
練習
如何使用String Step1: 先宣告 Step2: 使用method
String methods 取得字串長度:length() e.g.
HW kb_string2 求兩字串的最長共同字首 e.g. 輸入: 輸出:
String methods 比較兩個字串是否相同:equals(Object anObject) e.g. Correct: Error:
String methods 取得字串的特定字元:charAt(int index) e.g.
String methods 取得子字串在字串的位置: indexOf(String str, int fromIndex) e.g.
練習 kb_string1 length() charAt() equals()
練習 計算子字串在原始字串內出現的次數 e.g. 輸入: 輸出: P2Test-009 note: 使用indexOf(String str, int fromIndex) e.g. 輸入: 輸出: P2Test-009
Array(陣列) Def:最基本的容器 可儲存多個data Index從0開始
Array(陣列) 語法: 宣告 靜態宣告 動態宣告 寫法一: 寫法二: 生成 給值 1、宣告時左邊array中括號內不能給定大小 2、靜態宣告+給值時需寫在一起,不能分開
練習 array-001
Array(陣列) 如何取得陣列大小? e.g. 印出a陣列大小=3
對陣列的內容做排序 一、導入Arrays類別 二、對陣列做排序
練習 array-003
二維陣列 儲存方式:row major 宣告: 給值:
練習 kb_array2
練習 建立一個mxn大小的陣列 如: 印出每一位業務員各項目的銷售量, 最後計算公司總銷售量後印出 Array-010 各項目銷售量 32 35 26 30 34 33 31 各業務員 2x4
練習 P2Test-026
練習 kb_array1 併合且遞增排序兩個array
程設三
class (類別) Def:藍圖 or 模版 Jordan 11 模版 產生實體
class (類別) 架構: e.g. 皆可多個 2個成員成員變數 1個成員建構子 2個methods
方法(method) Def: 如同函數,可在內部實作某個功能 語法: Note:若不想回傳值,用void (最後不用加return)
方法(method) 如何在main class使用method? Ex1 : 欲在static method內使用別的method,則此method也須宣告成static Note:若method實作在main class內,則method須加上static
練習 kb_class1
練習 kb_class3
練習 建立一個method命名為count, 此method可計算子字串在原始字串內出現的次數 e.g. 輸入: 輸出: kb_class4 note: 使用indexOf(String str, int fromIndex) e.g. 輸入: 輸出: kb_class4
class (類別) 架構: e.g. 皆可多個 2個成員成員變數 1個成員建構子 2個methods
建構子(constructor) Def:用來給定成員變數初值 語法:1、method的特例 2、與類別名稱同名 可同時宣告
建立一個class (類別) – 不透用建構子給定成員變數初值 EX:建立一個Student學生類別 1、具一個成員變數,name 2、具一個method,getName()
如何使用一個class 新增一個實體s 使用實體s
練習 kb_class5
建立一個class (類別) – 用建構子給定成員變數初值 EX:建立一個Student學生類別 1、具一個成員變數,name 2、具一建構子,可用來給定name的初值 3、一個method,getName()
如何使用一個class 新增一個實體 使用實體
練習 kb_class7
練習 class-008 一、建立一個圓形(Circle)類別, 1、一個資料成員:半徑(radius) 2、一個method計算圓面積: getArea() Note:圓面積=3.14*radius*radius 二、利用此Circle類別新增一個實體 1、設定radius=1.2 2、輸出面積
作業 建立一個Jordan鞋子類別,此類別具有 1、兩個成員變數name(鞋名)、color(鞋顏色) 3、三個method String getName() //設定鞋名 void setColor() //設定鞋顏色 String getColor() //取得鞋顏色 kb_class2
練習 P2-hw010
static Def:用於變數 or method的宣告 e.g. 功能:1、共享 2、直接存取 讓多個物件共享此值 可不透過物件直接存取
練習 P2-hw09
System.out.printf %d:用於整數 Ex:
練習 P2-hw008
物件導向程式的三個特點 封裝 繼承 多型
授課內容 Review: array String Recursive Inheritance
寫程式的準則 要排版 有排版: 沒排版: 按tab鍵 來縮排
變數的命名 有效的變數: 1、開頭不能是數字 2、不可夾帶下列符號 「-」 「:」 e.g. 1、 2、
Scanner 常用的methods: nextLine():讀取一整行 next():讀取一個token
String Def:一種字串型態 1、非原生資料型態 2、不需要new 3、可使用它的method e.g.
String e.g. e.g.
String e.g. Correct: Error:
練習 kb_string3
String e.g. e.g.
String e.g. e.g.
練習 kb_string5
練習 kb_string4
Access control modes Visibility(能見度) 1、用於class 2、保護一個類別的屬性(or方法)不被外部任意修改,必須由內部控制 JAVA visibility 同一個class 同一個package 不同個package All methods child class Not child class Not child class private ok package (預設) protected Ok: method Fail: variable public 賽碼場
Visibility(能見度) e.g.
Example 設計一個車類別, 具有一個成員變數speed(車速),車速不可為負值 具有一個方法speedUp(加速) 避免user直接修改speed成員變數
練習 kb_visibility1
overloading Def: 一個類別內具有多個相同名稱的method, 但參數的型態、個數不同 e.g. 兩個不同的method
練習 P3Test-015
練習 kb_overloading1 m n p m k p 1 + (1+3) + (1+2*3) + (1+3*3) + (1+4*3) + …. = 1 + 4 + 7 + 10 =22 ( ∵13>10 )
Recursive Fibonacci number(費氏數列)
練習 kb_Fibonacci
Recursive Ackermann’s function A(2,2) = ? A(2,1) = ? A(1,2) = ?
練習 10511-test005
Recursive Hanoi Tower 1、搬移次數: T(n) = 2T(n-1) + 1 2、B柱至少需n-1空間
練習 kb_Recursive_HanoiTower
Abstract class 功能: 1、建構在繼承之上,不可直接new 2、只實作部份methods,abstract methods不實作 優點:讓base class較抽象化 語法: 不實作 須實作
Abstract class 建立 使用 Base class: Derived class:
class VS Abstract class 差別:1、一般類別內的method須實作, 描象類別內的描象method不實作 2、一般類別可直接new 描象類剛不可直接new 一般類別 描象類別
練習 kb_abstract1
Inheritance(繼承) 目的:重複使用code 認知: 愈上層的類別(父類別)愈抽象(base class or parent class) 愈下層的類別(子類別)愈精確(derived class or child class) 如:「上層類別animal」會比「上層類別people」來的描象 父類別,「parent class」or「base class」 子類別,「child class」or「derived class」
Inheritance(繼承) 用法 建立:建立父類別、子類別繼承父類別 使用:使用子類別 dog類別會有下成員 1、int age 2、void speak() 3、int foot
Overriding(覆寫) 用法 建立:建立父類別、子類別繼承父類別 使用:使用子類別 dog類別會有下成員 1、int age 2、int foot 3、void speak() (被覆寫)
super Def: 減少子類別程式碼 延用父類別的建構子 有參數 無參數 延用父類別的method
Example 父類別:2D圖形 子類別:長方形 沒用super 用super
練習 kb_Inheritance1
練習 kb_Inheritance2
類別圖 Def: 屬於UML的一種圖,用來描述系統內部的靜態結構
類別圖 元件: 類別 關係 Association Aggregation (has-a) Composition (part-of) Generalization (繼承) Realization (實作)
類別圖 Association Generalization Realization
toString() 任何類別都預設有此method 用途:印出類別物件時可直接印出字串 語法: 實作toString() All class 都繼承自Object這個類別 印出toString() 內的字串
練習 kb_practice_toString
練習 P3Test-011 子類別須透過 父類別的method來取得值 實作兩個methods 1、getWidth() 2、getLength() 輸出長方體的表面積
練習 P3Test-018 少toString() 建構子、getName()、area() 正方形邊長為5 立方體邊長為10 輸出表面積
練習 kb_compareObject
練習 kb_MaxLength
程設四
class的應用 應用:將class當作容器來儲存多個data 目的:解決低階容器使用上容易出錯的問題 易誤用index位置而出錯 Stack s; s.push(10);
Class應用 - 製作出好用的容器 class 容器 操作1 放data 操作2 取data
Class應用 - 製作出好用的容器 class array method1 放data method2 取data
Class應用 - 製作出好用的容器
Stack Def:一個容器,依先進後出(FILO)方式儲放data 使用:
利用Array製作Stack 宣告兩個變數: 實作三個操作: 1、top 2、int a[]; 4 3 2 1 1、push:放data進去 -1 實作三個操作: 1、push:放data進去 2、pop:取data出來 3、empty:判斷stack是否為空 1、判斷是否已滿 2、top+1 3、存入data top 1、判斷是否為空 2、取出data 3、top-1 判斷top是否為-1
利用Array製作Stack
練習 kb_Stack_LinearArray (若空間大小為3)
Overriding(覆寫) Ex: 功能: 1、 建構在繼承之上 2、父類別與子類別具有同相名稱的method, Type相同 參數數量、type相同
Overloading(多載) 功能:多個methods名稱相同,但參數的型 態、個數不同 EX: 參數個數=1 參數型態= String 參數個數=2 參數型態= String、int
example overriding implement
Abstract class 功能: 1、建構在繼承之上,不可直接new 2、只實作部份methods,abstract methods不實作 優點:讓base class較抽象化 語法: 不實作 須實作
Abstract class 建立 使用 Base class: 僅宣告不實作 Derived class: 留給子類別實作
class VS Abstract class 一般類別 描象類別 method須實作 部份method可不實作 可直接new 不可直接new 一般類別 描象類別
super 用途: 1、減少子類別程式碼 2、配合能見度使用 用法:寫在子類別 欲延用父類別的建構子 欲延用父類別的method 無參數 有參數 欲延用父類別的method EX: 父類別有private成員
Example 父類別:2D圖形 子類別:長方形 沒用super的寫法: 用super的寫法:
練習 kb_abstract2
Polymorphism(多型) 前提:1、多型建構在繼承之上 2、父類別與子類別具有相同名稱但不同功能的method 優點:讓父類別當作子類別的通用型態,以增加使用上的 彈性,減少系統的開發複雜度
Polymorphism(多型) 一般: 多型: 父 子 讓車子的行駛方式變戰車 (向上轉型)
Example1 父 子 a的可存取的範圍 = class A + overriding overriding
Example2 印出?????? Step1: R擁有的methods (繼承) Step2: R轉型後methods的內容 Step3: 呼叫到的method Ans: 4
kb_practice_polymorphism 練習 kb_practice_polymorphism
劍士、法師都有跑的method,所以寫一個「角色」父類別 多型的使用時機 應用:常使用在遊戲角色的建立 範例:建立「劍士」、「法師」角色 劍士、法師都有跑的method,所以寫一個「角色」父類別
缺點:程式彈性差,若有50個用劍角色則修改50個fight() 多型的使用時機 缺點:程式彈性差,若有50個用劍角色則修改50個fight()
EX: 劍士、騎士攻擊方式都是用”揮劍”, 多型的使用時機 EX: 劍士、騎士攻擊方式都是用”揮劍”, 若改成”串刺”須修改2個fight()
多型的使用時機 1、將「重複功能的method」寫成一個Fight類別 2、再寫一個UseSword類別繼承此Fight類別
改寫Character、Swordsman、knight類別 多型的使用時機 改寫Character、Swordsman、knight類別 [優點] 1、減少重複的程式碼 2、減少人工修改時間、失誤率
多型的使用時機 主程式
練習 kb_polymorphism1
Interface(介面) 功能:只宣告但所有methods都不實作 優點:讓base class更抽象化 建立: 介面名稱 (隨便命名) 僅宣告不實作 Note: 1、interface 不可直接new 2、interface 可繼承 3、實作interface時記得method要宣告成public
Example 介面: 實作: 介面名稱 實作介面 (記得加上public)
Interface(介面) 同時實作多個介面: 介面1 介面2
練習 P4Test-030 實作出來
Interface(介面) 若想新增method:[法一] 利用interface 突然想宣告一些不實作的methods
Interface(介面) 若想新增method:[法二] 利用abstract類別 突然想宣告一些不實作的methods
Interface(介面) 若想同時「繼承某類別」且「實作某介面」
練習 P4Test-011 accountFee() (題目寫錯了) 實作出此類別圖 accountFee() accountFee()
練習 P4Test-010 accountFee() (題目寫錯了) 實作出此類別圖 accountFee() accountFee()
enum(列舉) Def:定義名詞來取代常數 宣告: 使用: 列舉名稱
練習7 kb_practice_enum
generic(泛型) 功能:讓type的使用更有彈性 Ex: 也不一定要用T
練習8 kb_practice_generic
HW4 P4Test-011
可加入e.toString()來得知原始的例外訊息 Exception(例外處理) 目的:讓你的程式在執行階段時更加穩固,不易crash 寫法1: 編譯階段 – compiling 載入階段 - 點兩下執行檔 執行階段 - 程式執行中 arithmeticException EX: 可加入e.toString()來得知原始的例外訊息
Exception(例外處理) 寫法2: EX: ArithmeticException
常見的Exception type ArrayIndexOutOfBoundsException ArithmeticException InterruptedException NumberFormatException InputMismatchException Exception
Example1 Method須加上關鍵字 編譯階段 – compiling 載入階段 - 點兩下執行檔 執行階段 - 程式執行中
手動觸發例外 利用「throw」 內建的Exception類別 (也可自行建立) 若用Exception類別的話 可加入例外訊息 再利用getMessage()取得訊息 引發例外後程式即會中斷,所以不會執行到此行
Exception 自行引發例外 + 不中斷的做法 利用getMessage()取得回傳的訊息
Exception 自行引發例外 +不中斷的做法+不使用內建例外類別 自行建立例外類別 自行建立例外類別
Example2 印出例外回傳的字串 自動偵測哪種例外 手動指定哪種例外 若 a.div(11,1) 則輸出 “Exception: C>10” 自動偵測哪種例外 手動指定哪種例外
練習 kb_Exception1
練習 P4Test-009