Presentation is loading. Please wait.

Presentation is loading. Please wait.

程設一.

Similar presentations


Presentation on theme: "程設一."— Presentation transcript:

1 程設一

2 配分 項目 備註 正課 20% 實習課 平常表現10%、統一作業10% 統一會考 60% 筆試30%、上機考30% 自學檢則(加分) 10%
[時間地點]:中午12:00 or 下午17:00在主顧322 or 主顧324 [計分方式]: 一顆星每題加0.5分,兩顆星每題加1分,最高加到10分

3 綱要 各種程式語言 英打 靜宜賽碼場 JDK安裝 Eclipse for JAVA JAVA程式語言介紹

4 各種程式語言 第一代 機器語言 第二代 組合語言 第三代 高階語言(程序導向語言)
Ex: FORTRAN、COBOL、PASCAL、Ada、C、BASIC、Perl 第四代 極高階語言(物件導向語言) Ex: C++、JAVA、VB、PHP、C#、Python、smalltalk 第五代 LISP、PROLOG

5 程式的用途 自用 協助處理反覆的例行性工作 破壞 病毒、木馬 每天將c開頭的單字換成a開頭的單字 寫一個daemon程式來取代人工

6 程式的開發 編譯器 Source code execute 選擇一個開發平台 EX: JDK e.g. 賽碼場

7 程式的開發– 實例 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

8 英打 一分鐘測試英打速度

9 常見的JAVA程式開發軟體 1、Eclipse 2、IntelliJ IDEA 3、Jcreator 4、靜宜賽碼場

10 Example - Eclipse Project Package Java檔 Java檔 Java檔 Class Package
method method Class

11 Example - Eclipse Project name Package name

12 靜宜賽碼場 網頁版 沒辦法寫程式 用來加課程、看資訊 軟體版 可寫程式

13 靜宜賽碼場 – 註冊 註冊

14 靜宜賽碼場 – 註冊 輸入可收到信的

15 靜宜賽碼場 – 註冊

16 靜宜賽碼場 – 註冊 填寫「學習家族組名」 Ex: 資工一A Ex: 資訊工程系 Ex: 中文姓名 Ex:

17 靜宜賽碼場 – 註冊

18 靜宜賽碼場 – 加選課程 登入「網頁版」賽碼場來加選課程 1 確定是否真的有登入成功 3 4 2

19 靜宜賽碼場 – 軟體版 路徑: 執行:

20 靜宜賽碼場 – 軟體版 6 1 3 4 2 5

21 練習 kb_practice_helloJava

22 JDK( Java SE Development Kits)
手機、嵌入式系統 大型網站開發 JAVA JAVA ME JAVA EE 1 JAVA SE (JDK) 一般應用程式適用

23 2 3 點選安裝

24 檢查是否有這選項

25 靜宜賽碼場 -評判伺服器訊息 Local端程式正確 (尚未通過server端驗證) 點選

26 靜宜賽碼場 -評判伺服器訊息 Server端程式正確 (已通過server端驗證且上傳) 當local端驗證無誤,則點選

27 靜宜賽碼場 -評判伺服器訊息 語法出錯

28 靜宜賽碼場 – 評判伺服器訊息 沒有輸出 (可能沒印出data)

29 靜宜賽碼場 – 評判伺服器訊息 輸出的格式有錯

30 靜宜賽碼場 – 評判伺服器訊息 執行時間超時 (可能你的程式進入無限迴圈)

31 JAVA的程式儲存 1、你的程式碼會儲存在java檔內 2、你的java檔會儲存在資料夾(專案)內 (賽碼場檔名固定取名main.java)
內存 可切割

32 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所組成

33 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

34 Example 1、有幾個class? 幾個method? 2、是否可改寫成如下 ? 3、程式的執行流程?

35 Solution 1、執行流程 1 2 3 4 6 5 7 2、1個class 3個method

36 Example 可改成method的寫法

37 寫程式的準則 – 排版 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鍵

38 Example 要排版 有排版: 沒排版: 按tab鍵 來縮排

39 寫程式的準則 – 命名 變數的命名須有意義 變數的名稱開頭習慣小寫 不好

40 寫程式的準則 – 命名 有效的變數: 1、開頭不能是數字 2、不可夾帶下列符號 「-」 「:」 Note: 關鍵字:藍色 識別字:黑色

41 練習 – 排版 kb_Recursive_HanoiTower

42

43 輸出 [語法] 放你的data e.g. 換行 e.g. 不換行

44 e.g. 合併輸出 利用「+」運算子

45 練習 basic_output

46 變數宣告 Def:利用變數來儲存data值 語法: [變數型態] [變數名稱] = data值; e.g.

47 Data type Ex:

48 Data type range

49 相異型態資料的合併 利用「+」運算子 Ex: 將字串、整數合併印出 Ex: 將多個浮點數合併印出

50 「=」運算子 Def:Assign的意思,即給值,並非相等的意思 e.g.

51 Example 宣告、給值 分開寫 宣告、給值 寫在一起 多個變數 可利用「+」運算子來合併各data印出

52 Example a = ???

53 練習 basic_dataType

54 輸入 [語法] e.g. 讀取一列: 讀取一個:

55 Scanner Method:

56 Scanner 宣告 使用

57 如何除錯? 如何除錯 ? 利用「印出值」的方式 如何確保s的值符合預期 ?

58 練習 kb_inputOutput1 輸入三個data, 第一個為int型態的data 第二個為double型態的data
第三個為String型態的data 使用Scanner取得此三個data,並且 印出此三個data

59 Operator(運算子) 前置加 後置加

60 資料型態的對應 兩個整數相除結果 得整數 兩個數相除,若其中一數為浮點數得浮點數

61 資料型態的對應 Case1: Case2:

62 Example 改成int height才對 what's wrong ??

63 練習 CP1Easy01:攝氏轉華氏

64 如何限制小數點位數 無窮小數 無窮小數

65 如何限制小數點位數 語法: format EX: 僅顯示小數第二位

66 練習 CP1Easy04

67 % 應用:切割整數 Ex: 右到左切割

68 / 應用:切割整數 Ex: 左到右切割

69 練習 basic_money

70 ++、-- 前置加:這一行就加 後置加:下一行才加

71 練習 若有兩個整數x=1、y=2,如何運用第三個變數z,將x與y兩數的內容交換? kb_swap

72 if、else 用途:條件判斷,用在2選1的情況 語法: Ex : 不是做case1就是做case2

73 else if 用途:條件判斷,用在n選1的情況(n>=3) 搭配if、else使用 語法: 4選1,
從case1~case4選其中執行

74 練習 輸入2個整數a、b,若a>=b或a==10則執行a-b並印出,否則執行a+b並印出 kb_practice_ifelse

75 練習 kb_practice_ifelse2 考試成績有六個級別 A B C D E F 分別對應分數
利用if else技巧,輸入分數印出對應的級別 kb_practice_ifelse2

76 練習 輸入一個整數,若是奇數,輸出字串Odd,否則輸出字串Even。 P1Test-023

77 Example

78 Example 下列兩者的差異?

79 if…else VS else if if…else:2選1 else if: n選1,

80 練習 Calculate Body Mass Index (BMI)

81 練習 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

82 練習 1032-P1-下9週-Test1-判斷閏年 (30 points) 1、西元年份是400的倍數
認知: 1、西元年份是400的倍數 2、西元年份是4的倍數但不是100的倍數 閏年

83 統一作業

84 統一作業

85 統一作業

86 練習 kb_guessNum

87 switch 語法:

88 Example

89 程設二

90 迴圈 種類 for while do … while

91 for 語法: Ex1: Ex2:

92 For執行流程 功能:印出5次字串 1、 2、 4、 3、

93 累加 sum=1 sum=3

94 練習 kb_practice_for1 輸入一個整數n 1、若n值大於5,則印出 ”Fail”
2、否則利用for迴圈方式印出n次 ”hello”

95 練習 kb_practice_for2 輸入一個整數n , 1、若n<1 或 n>100則輸出"Fail"

96 練習 P1Test-018 輸入一個整數n 利用for迴圈計算n!的值

97 練習 kb_game

98 for 如何不執行完迴圈就先行離開? Ex: 「break」 執行到第5次就離開迴圈

99 for 如何不執行完迴圈內部程式碼就執行下一次迴圈? Ex: 「continue」 在迴圈執行到第三次時才會印出”Bye”

100 練習 kb_break

101 HW P1Test-006 輸入兩個整數,計算兩個整數之間所有奇數的和

102 練習 kb_gcd 輸入兩個整數,計算兩個整數的最大公因數

103 分析 [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

104 巢狀迴圈 - for Def:兩層for迴圈 Ex:

105 Example

106 練習 輸入直角三角型的高h,建立出高h的*符號直角三角形 input: 3 output: * ** ***

107 練習 建立一個高度=n且由*所構成的等腰三角形 input: 5 output: * *** ***** ******* *********

108 練習 kb_99multipyTable 顯示某區間的99乘法表 input: 2 5 output: 2x1 2x2 ......

109 HW 找出M到N之間的所有質數 e.g. 輸入:5 20 輸出:

110 迴圈種類 for while do-while ex: break 強制離開迴圈 Continue 略過迴圈此回合 常搭配下列使用

111 while迴圈 語法: e.g.

112 do-while迴圈 語法: e.g.

113 練習 kb_practice_dowhile1 利用for、while、do-while三種寫法求得「 ,但不含5」結果值

114 練習 利用do-while完成「反向輸出一個正整數」, 若此正整數超出int範圍,則輸出"out of range"
kb_practice_dowhile2 利用do-while完成「反向輸出一個正整數」, 若此正整數超出int範圍,則輸出"out of range" input: output:654321

115 String type Def:一種字串type 1、非原生type 2、可使用它的method e.g.

116 String methods 比較兩字串大小:compareTo(String anotherString)
回傳值: 小於return -1 否則return正整數 e.g.

117 練習

118 如何使用String Step1: 先宣告 Step2: 使用method

119 String methods 取得字串長度:length() e.g.

120 HW kb_string2 求兩字串的最長共同字首 e.g. 輸入: 輸出:

121 String methods 比較兩個字串是否相同:equals(Object anObject) e.g. Correct: Error:

122 String methods 取得字串的特定字元:charAt(int index) e.g.

123 String methods 取得子字串在字串的位置: indexOf(String str, int fromIndex)
e.g.

124 練習 kb_string1 length() charAt() equals()

125 練習 計算子字串在原始字串內出現的次數 e.g. 輸入: 輸出: P2Test-009
note: 使用indexOf(String str, int fromIndex) e.g. 輸入: 輸出: P2Test-009

126 Array(陣列) Def:最基本的容器 可儲存多個data Index從0開始

127 Array(陣列) 語法: 宣告 靜態宣告 動態宣告 寫法一: 寫法二: 生成 給值 1、宣告時左邊array中括號內不能給定大小
2、靜態宣告+給值時需寫在一起,不能分開

128 練習 array-001

129 Array(陣列) 如何取得陣列大小? e.g. 印出a陣列大小=3

130 對陣列的內容做排序 一、導入Arrays類別 二、對陣列做排序

131 練習 array-003

132 二維陣列 儲存方式:row major 宣告: 給值:

133 練習 kb_array2

134 練習 建立一個mxn大小的陣列 如: 印出每一位業務員各項目的銷售量, 最後計算公司總銷售量後印出 Array-010 各項目銷售量 32
35 26 30 34 33 31 各業務員 2x4

135 練習 P2Test-026

136 練習 kb_array1 併合且遞增排序兩個array

137 程設三

138 class (類別) Def:藍圖 or 模版 Jordan 11 模版 產生實體

139 class (類別) 架構: e.g. 皆可多個 2個成員成員變數 1個成員建構子 2個methods

140 方法(method) Def: 如同函數,可在內部實作某個功能 語法: Note:若不想回傳值,用void (最後不用加return)

141 方法(method) 如何在main class使用method? Ex1 :
欲在static method內使用別的method,則此method也須宣告成static Note:若method實作在main class內,則method須加上static

142 練習 kb_class1

143 練習 kb_class3

144 練習 建立一個method命名為count, 此method可計算子字串在原始字串內出現的次數 e.g. 輸入: 輸出: kb_class4
note: 使用indexOf(String str, int fromIndex) e.g. 輸入: 輸出: kb_class4

145 class (類別) 架構: e.g. 皆可多個 2個成員成員變數 1個成員建構子 2個methods

146 建構子(constructor) Def:用來給定成員變數初值 語法:1、method的特例 2、與類別名稱同名 可同時宣告

147 建立一個class (類別) – 不透用建構子給定成員變數初值
EX:建立一個Student學生類別 1、具一個成員變數,name 2、具一個method,getName()

148 如何使用一個class 新增一個實體s 使用實體s

149 練習 kb_class5

150 建立一個class (類別) – 用建構子給定成員變數初值
EX:建立一個Student學生類別 1、具一個成員變數,name 2、具一建構子,可用來給定name的初值 3、一個method,getName()

151 如何使用一個class 新增一個實體 使用實體

152 練習 kb_class7

153 練習 class-008 一、建立一個圓形(Circle)類別, 1、一個資料成員:半徑(radius)
2、一個method計算圓面積: getArea() Note:圓面積=3.14*radius*radius 二、利用此Circle類別新增一個實體 1、設定radius=1.2 2、輸出面積

154 作業 建立一個Jordan鞋子類別,此類別具有 1、兩個成員變數name(鞋名)、color(鞋顏色)
3、三個method String getName() //設定鞋名 void setColor() //設定鞋顏色 String getColor() //取得鞋顏色 kb_class2

155 練習 P2-hw010

156 static Def:用於變數 or method的宣告 e.g. 功能:1、共享 2、直接存取 讓多個物件共享此值 可不透過物件直接存取

157 練習 P2-hw09

158 System.out.printf %d:用於整數 Ex:

159 練習 P2-hw008

160 物件導向程式的三個特點 封裝 繼承 多型

161 授課內容 Review: array String Recursive Inheritance

162 寫程式的準則 要排版 有排版: 沒排版: 按tab鍵 來縮排

163 變數的命名 有效的變數: 1、開頭不能是數字 2、不可夾帶下列符號 「-」 「:」 e.g. 1、 2、

164 Scanner 常用的methods: nextLine():讀取一整行 next():讀取一個token

165 String Def:一種字串型態 1、非原生資料型態 2、不需要new 3、可使用它的method e.g.

166 String e.g. e.g.

167 String e.g. Correct: Error:

168 練習 kb_string3

169 String e.g. e.g.

170 String e.g. e.g.

171 練習 kb_string5

172 練習 kb_string4

173 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 賽碼場

174 Visibility(能見度) e.g.

175 Example 設計一個車類別, 具有一個成員變數speed(車速),車速不可為負值 具有一個方法speedUp(加速)
避免user直接修改speed成員變數

176 練習 kb_visibility1

177 overloading Def: 一個類別內具有多個相同名稱的method, 但參數的型態、個數不同 e.g. 兩個不同的method

178 練習 P3Test-015

179 練習 kb_overloading1 m n p m k p
1 + (1+3) + (1+2*3) + (1+3*3) + (1+4*3) + …. = =22 ( ∵13>10 )

180

181 Recursive Fibonacci number(費氏數列)

182 練習 kb_Fibonacci

183 Recursive Ackermann’s function A(2,2) = ? A(2,1) = ? A(1,2) = ?

184 練習 10511-test005

185 Recursive Hanoi Tower 1、搬移次數: T(n) = 2T(n-1) + 1 2、B柱至少需n-1空間

186 練習 kb_Recursive_HanoiTower

187 Abstract class 功能: 1、建構在繼承之上,不可直接new
2、只實作部份methods,abstract methods不實作 優點:讓base class較抽象化 語法: 不實作 須實作

188 Abstract class 建立 使用 Base class: Derived class:

189 class VS Abstract class
差別:1、一般類別內的method須實作, 描象類別內的描象method不實作 2、一般類別可直接new 描象類剛不可直接new 一般類別 描象類別

190 練習 kb_abstract1

191 Inheritance(繼承) 目的:重複使用code 認知:
愈上層的類別(父類別)愈抽象(base class or parent class) 愈下層的類別(子類別)愈精確(derived class or child class) 如:「上層類別animal」會比「上層類別people」來的描象 父類別,「parent class」or「base class」 子類別,「child class」or「derived class」

192 Inheritance(繼承) 用法 建立:建立父類別、子類別繼承父類別 使用:使用子類別 dog類別會有下成員 1、int age
2、void speak() 3、int foot

193 Overriding(覆寫) 用法 建立:建立父類別、子類別繼承父類別 使用:使用子類別 dog類別會有下成員 1、int age
2、int foot 3、void speak() (被覆寫)

194 super Def: 減少子類別程式碼 延用父類別的建構子 有參數 無參數 延用父類別的method

195 Example 父類別:2D圖形 子類別:長方形 沒用super 用super

196 練習 kb_Inheritance1

197 練習 kb_Inheritance2

198 類別圖 Def: 屬於UML的一種圖,用來描述系統內部的靜態結構

199 類別圖 元件: 類別 關係 Association Aggregation (has-a) Composition (part-of)
Generalization (繼承) Realization (實作)

200 類別圖 Association Generalization Realization

201 toString() 任何類別都預設有此method 用途:印出類別物件時可直接印出字串 語法: 實作toString()
All class 都繼承自Object這個類別 印出toString() 內的字串

202 練習 kb_practice_toString

203 練習 P3Test-011 子類別須透過 父類別的method來取得值 實作兩個methods 1、getWidth()
2、getLength() 輸出長方體的表面積

204 練習 P3Test-018 少toString() 建構子、getName()、area() 正方形邊長為5 立方體邊長為10 輸出表面積

205 練習 kb_compareObject

206 練習 kb_MaxLength

207 程設四

208 class的應用 應用:將class當作容器來儲存多個data 目的:解決低階容器使用上容易出錯的問題 易誤用index位置而出錯
Stack s; s.push(10);

209 Class應用 - 製作出好用的容器 class 容器 操作1 放data 操作2 取data

210 Class應用 - 製作出好用的容器 class array method1 放data method2 取data

211 Class應用 - 製作出好用的容器

212 Stack Def:一個容器,依先進後出(FILO)方式儲放data 使用:

213 利用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

214 利用Array製作Stack

215 練習 kb_Stack_LinearArray (若空間大小為3)

216 Overriding(覆寫) Ex: 功能: 1、 建構在繼承之上 2、父類別與子類別具有同相名稱的method,
Type相同 參數數量、type相同

217 Overloading(多載) 功能:多個methods名稱相同,但參數的型 態、個數不同 EX: 參數個數=1 參數型態= String
參數個數=2 參數型態= String、int

218 example overriding implement

219 Abstract class 功能: 1、建構在繼承之上,不可直接new
2、只實作部份methods,abstract methods不實作 優點:讓base class較抽象化 語法: 不實作 須實作

220 Abstract class 建立 使用 Base class: 僅宣告不實作 Derived class: 留給子類別實作

221 class VS Abstract class
一般類別 描象類別 method須實作 部份method可不實作 可直接new 不可直接new 一般類別 描象類別

222 super 用途: 1、減少子類別程式碼 2、配合能見度使用 用法:寫在子類別 欲延用父類別的建構子 欲延用父類別的method 無參數
有參數 欲延用父類別的method EX: 父類別有private成員

223 Example 父類別:2D圖形 子類別:長方形 沒用super的寫法: 用super的寫法:

224 練習 kb_abstract2

225 Polymorphism(多型) 前提:1、多型建構在繼承之上 2、父類別與子類別具有相同名稱但不同功能的method
優點:讓父類別當作子類別的通用型態,以增加使用上的 彈性,減少系統的開發複雜度

226 Polymorphism(多型) 一般: 多型: 讓車子的行駛方式變戰車 (向上轉型)

227 Example1 a的可存取的範圍 = class A + overriding overriding

228 Example2 印出?????? Step1: R擁有的methods (繼承) Step2: R轉型後methods的內容
Step3: 呼叫到的method Ans: 4

229 kb_practice_polymorphism
練習 kb_practice_polymorphism

230 劍士、法師都有跑的method,所以寫一個「角色」父類別
多型的使用時機 應用:常使用在遊戲角色的建立 範例:建立「劍士」、「法師」角色 劍士、法師都有跑的method,所以寫一個「角色」父類別

231 缺點:程式彈性差,若有50個用劍角色則修改50個fight()
多型的使用時機 缺點:程式彈性差,若有50個用劍角色則修改50個fight()

232 EX: 劍士、騎士攻擊方式都是用”揮劍”,
多型的使用時機 EX: 劍士、騎士攻擊方式都是用”揮劍”, 若改成”串刺”須修改2個fight()

233 多型的使用時機 1、將「重複功能的method」寫成一個Fight類別 2、再寫一個UseSword類別繼承此Fight類別

234 改寫Character、Swordsman、knight類別
多型的使用時機 改寫Character、Swordsman、knight類別 [優點] 1、減少重複的程式碼 2、減少人工修改時間、失誤率

235 多型的使用時機 主程式

236 練習 kb_polymorphism1

237 Interface(介面) 功能:只宣告但所有methods都不實作 優點:讓base class更抽象化 建立: 介面名稱 (隨便命名)
僅宣告不實作 Note: 1、interface 不可直接new 2、interface 可繼承 3、實作interface時記得method要宣告成public

238 Example 介面: 實作: 介面名稱 實作介面 (記得加上public)

239 Interface(介面) 同時實作多個介面: 介面1 介面2

240 練習 P4Test-030 實作出來

241 Interface(介面) 若想新增method:[法一] 利用interface 突然想宣告一些不實作的methods

242 Interface(介面) 若想新增method:[法二] 利用abstract類別 突然想宣告一些不實作的methods

243 Interface(介面) 若想同時「繼承某類別」且「實作某介面」

244 練習 P4Test-011 accountFee() (題目寫錯了) 實作出此類別圖 accountFee() accountFee()

245 練習 P4Test-010 accountFee() (題目寫錯了) 實作出此類別圖 accountFee() accountFee()

246 enum(列舉) Def:定義名詞來取代常數 宣告: 使用: 列舉名稱

247 練習7 kb_practice_enum

248 generic(泛型) 功能:讓type的使用更有彈性 Ex: 也不一定要用T

249 練習8 kb_practice_generic

250 HW4 P4Test-011

251 可加入e.toString()來得知原始的例外訊息
Exception(例外處理) 目的:讓你的程式在執行階段時更加穩固,不易crash 寫法1: 編譯階段 – compiling 載入階段 - 點兩下執行檔 執行階段 - 程式執行中 arithmeticException EX: 可加入e.toString()來得知原始的例外訊息

252 Exception(例外處理) 寫法2: EX: ArithmeticException

253 常見的Exception type ArrayIndexOutOfBoundsException ArithmeticException
InterruptedException NumberFormatException InputMismatchException Exception

254 Example1 Method須加上關鍵字 編譯階段 – compiling 載入階段 - 點兩下執行檔 執行階段 - 程式執行中

255 手動觸發例外 利用「throw」 內建的Exception類別 (也可自行建立) 若用Exception類別的話 可加入例外訊息
再利用getMessage()取得訊息 引發例外後程式即會中斷,所以不會執行到此行

256 Exception 自行引發例外 + 不中斷的做法 利用getMessage()取得回傳的訊息

257 Exception 自行引發例外 +不中斷的做法+不使用內建例外類別 自行建立例外類別 自行建立例外類別

258 Example2 印出例外回傳的字串 自動偵測哪種例外 手動指定哪種例外
若 a.div(11,1) 則輸出 “Exception: C>10” 自動偵測哪種例外 手動指定哪種例外

259 練習 kb_Exception1

260 練習 P4Test-009


Download ppt "程設一."

Similar presentations


Ads by Google