![java異常處理_第1頁](http://file3.renrendoc.com/fileroot_temp3/2022-2/24/ce6bc6e1-d6ce-41ee-9233-0ec57586f641/ce6bc6e1-d6ce-41ee-9233-0ec57586f6411.gif)
![java異常處理_第2頁](http://file3.renrendoc.com/fileroot_temp3/2022-2/24/ce6bc6e1-d6ce-41ee-9233-0ec57586f641/ce6bc6e1-d6ce-41ee-9233-0ec57586f6412.gif)
![java異常處理_第3頁](http://file3.renrendoc.com/fileroot_temp3/2022-2/24/ce6bc6e1-d6ce-41ee-9233-0ec57586f641/ce6bc6e1-d6ce-41ee-9233-0ec57586f6413.gif)
![java異常處理_第4頁](http://file3.renrendoc.com/fileroot_temp3/2022-2/24/ce6bc6e1-d6ce-41ee-9233-0ec57586f641/ce6bc6e1-d6ce-41ee-9233-0ec57586f6414.gif)
![java異常處理_第5頁](http://file3.renrendoc.com/fileroot_temp3/2022-2/24/ce6bc6e1-d6ce-41ee-9233-0ec57586f641/ce6bc6e1-d6ce-41ee-9233-0ec57586f6415.gif)
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、自定義異常類,封裝取款時(shí)發(fā)生異常的情況。定義銀行賬號(hào)類,當(dāng)取款發(fā)生異常時(shí)拋出該異常,并寫測(cè)試類測(cè)試。public class DepositException extends Exception public DepositException() super();/ TODO Auto-generated constructor stubpublic DepositException(String message) super(message);/ TODO Auto-generated constructor stubpackage com.chinasofti.bank;/* 銀行賬戶的父
2、類,定義共同的屬性和方法* 是抽象類,定義子類的共同特征* author wxh*/public abstract class Account / 定義屬性private String accountId;private String pwd;private double balance;/ 日志數(shù)組private String logInfo=new String3;private int logIndex;/ 無參數(shù)構(gòu)造方法public Account()/ 使用this調(diào)用本類重載的其他構(gòu)造方法this("0000","123456",0.0);S
3、ystem.out.println("調(diào)用Account()");public Account(String accountId, String pwd, double balance) super();this.accountId = accountId;this.pwd = pwd;this.balance = balance;System.out.println("調(diào)用Account(String accountId, String pwd, double balance)"); / getters和setterspublic String get
4、AccountId() return accountId;public String getPwd() return pwd;public void setPwd(String pwd) this.pwd = pwd;public double getBalance() return balance;public void setBalance(double balance) this.balance = balance;/ 存款,不使用異常/ public boolean deposit(double amount)/ boolean flag=true;/ if(amount>0&a
5、mp;&amount<=10000)/ Logger.log(this, "存款成功,金額:"+amount);/ balance+=amount;/ else/ flag=false;/ / return flag;/ / 存款,使用異常/ public void deposit(double amount)/ if(amount>0&&amount<=10000)/ Logger.log(this, "存款成功,金額:"+amount);/ balance+=amount;/ else/ 拋出異常/ try
6、/ throw new Exception("存款失敗");/ catch (Exception e) / System.out.println("存款金額不能為負(fù)數(shù),重新輸入。"); / / / / 存款,throws/ public void deposit(double amount) throws Exception / if(amount>0&&amount<=10000)/ Logger.log(this, "存款成功,金額:"+amount);/ balance+=amount;/ else/
7、 拋出異常/ throw new Exception("存款失敗");/ / / 存款,throws,層層拋出public void deposit(double amount) throws DepositExceptionif(amount>0&&amount<=10000)Logger.log(this, "存款成功,金額:"+amount);balance+=amount;else/ 拋出異常trythrow new DepositException("存款失敗");catch(DepositExc
8、eption e)Logger.log(this, "存款失敗,金額:"+amount);throw e;/ 存款,throws,層層拋出/ public void deposit(double amount) throws Exception / if(amount>0&&amount<=10000)/ Logger.log(this, "存款成功,金額:"+amount);/ balance+=amount;/ else/ 拋出異常/ try/ throw new Exception("存款失敗");/
9、 finally/ System.out.println("deposit方法總要執(zhí)行的代碼"); / / / / 取款,抽象方法,定義了what to do,How to do在子類定義 / 當(dāng)取款失敗時(shí),拋出異常public abstract void withdraw(double amount)throws Exception;/ 對(duì)日志的數(shù)組,索引,進(jìn)行修改和查詢public String getLogInfo() return logInfo;public int getLogIndex() return logIndex;public void setLogI
10、ndex(int logIndex) this.logIndex = logIndex;public class CreditAccount extends Account / 子類定義新的屬性private double limit;/ 定義構(gòu)造方法public CreditAccount(String accountId,String pwd,double balance,double limit) super(accountId,pwd,balance);this.limit=limit;public double getLimit() return limit;public void
11、setLimit(double limit) this.limit = limit;/ 存款,與父類同名,同參,同返回值,權(quán)限不縮小public void deposit(double amount) throws DepositExceptionif(amount>=100000)limit+=limit*1.1;super.deposit(amount);/ 重寫父類中的抽象方法public void withdraw(double amount) System.out.println("信用卡取款,需要交利息");if(amount<limit*0.2)s
12、uper.setBalance(super.getBalance()-amount);Logger.log(this, "信用卡提現(xiàn)成功,金額:"+amount);7 常用API常用API 判斷一門語言是否強(qiáng)大,其中一個(gè)指標(biāo)就是看已經(jīng)提供的可用函數(shù)庫或類庫是否豐富 JavaSE提供了豐富的類庫 一定要習(xí)慣查詢API幫助文檔數(shù)學(xué)APIMath類中的所有方法都是靜態(tài)的,提供了大量進(jìn)行數(shù)學(xué)運(yùn)算的方法。Math類 數(shù)學(xué)類定義了許多數(shù)學(xué)函數(shù),如sin、cos、exp、abs等。Math類是一個(gè)工具類,它在解決與數(shù)學(xué)有關(guān)的一些問題有著非常重要的作用。 這個(gè)類有兩個(gè)靜態(tài)屬性:E和PI。E
13、代表數(shù)學(xué)中的e 2.7182818,而PI代表圓周率3.1415926。調(diào)用,不需要先創(chuàng)建類的一個(gè)對(duì)象 Math類靜態(tài)方法 Math.abs 求絕對(duì)值 Math.sin 正弦函數(shù) Math.asin 反正弦函數(shù) Math.cos 余弦函數(shù) Math.acos 反余弦函數(shù) Math.tan 正切函數(shù) Math.atan 反正切函數(shù) Math.toDegrees 弧度轉(zhuǎn)化為角度 Math.toRadians 角度轉(zhuǎn)化為弧度 Math.ceil 得到不小于某數(shù)的最大整數(shù) Math.floor 得到不大于某數(shù)的最大整數(shù)Math類靜態(tài)方法 Math.max 求兩數(shù)中最大 Math.min 求兩數(shù)中最小
14、Math.sqrt 求開方 Math.pow 求某數(shù)的任意次方, 拋出ArithmeticException處理溢出異常 Math.exp 求e的任意次方 Math.log10 以10為底的對(duì)數(shù) Math.log 自然對(duì)數(shù) Math.rint 求距離某數(shù)最近的整數(shù)(可能比某數(shù)大,也可能比它?。?Math.round 同上,返回int型或者long型(上一個(gè)函數(shù)返回double型) Math.random 返回0,1之間的一個(gè)隨機(jī)數(shù)9 時(shí)間與日期日歷在實(shí)際工作過程中,時(shí)間、日期是非常常見的類型。Date類 表示特定的瞬間,精確到毫秒DateFormat類(抽象類) 抽象類,以與語言無關(guān)的方式格式
15、化并分析日期或時(shí)間。SimpleDateFormat類( DateFormat的子類) 與語言環(huán)境相關(guān)的方式來格式化和分析日期的具體類Calendar類 抽象類,為特定瞬間與一組諸如 YEAR、MONTH、DAY_OF_MONTH、HOUR 等 日歷字段之間的轉(zhuǎn)換提供了一些方法,并為操作日歷字段(例如獲得下星期的日期)提供了一些方法。Java中日期的常見處理 創(chuàng)建日期 日期格式化顯示 日期的轉(zhuǎn)換(主要是和字符串之間的相互轉(zhuǎn)換) 日期中年、月、日、時(shí)、分、秒、星期、月份等獲取。 日期的大小比較、日期的加減。10 BigInteger類使用的原因 8種基本數(shù)據(jù)類型中,long類型所能表示的整數(shù)范圍
16、是最大的,但還是有限的。 為了解決這些問題,Java中專門提供了用來進(jìn)行不限制大小的整數(shù)計(jì)算的類java.math.BigInteger。該類可以對(duì)任意大小的整數(shù)進(jìn)行操作,不過在進(jìn)行計(jì)算的時(shí)候是通過方法調(diào)用進(jìn)行的,而不是使用算術(shù)運(yùn)算符BigInteger類-構(gòu)造方法 BigInteger(byte val):使用一個(gè)byte數(shù)組表示來構(gòu)造一個(gè)大整數(shù), BigInteger(int signum, byte magnitude):用一個(gè)byte數(shù)組magnitude來構(gòu)造大整數(shù),用signum的-1,0,1來表示負(fù),零,正。 BigInteger(int bitLength, int certa
17、inty, Random rnd):構(gòu)造一個(gè)隨機(jī)產(chǎn)生的,正的,指定長度的,可能是素?cái)?shù)的大整數(shù),參數(shù)certainty指明要進(jìn)行多少次素?cái)?shù)測(cè)試. BigInteger(int numBits, Random rnd):構(gòu)造一個(gè)隨機(jī)產(chǎn)生的大整數(shù),范圍在0到2numBits 1之間.BigInteger類-構(gòu)造方法 BigInteger(String val):轉(zhuǎn)換十進(jìn)制的字符串表達(dá)方式為BigInteger這個(gè)字符串由一系列的10進(jìn)制數(shù)字和可選擇的負(fù)號(hào)組成符轉(zhuǎn)數(shù)字的映射由Character.digit實(shí)現(xiàn)這個(gè)字符串不能包含任意無關(guān)字符(例如:空格) BigInteger(String val, i
18、nt radix):轉(zhuǎn)換字符串的表達(dá)式為指定(radix)進(jìn)制的大整數(shù)這個(gè)字符串由一系列的指定進(jìn)制(radix)的數(shù)字組成,任意跟上負(fù)號(hào)字符轉(zhuǎn)數(shù)字的映射由Character.digit實(shí)現(xiàn)同樣,這個(gè)字符串不能包含任意無關(guān)字符(例如:空格)BigInteger的方法-四則運(yùn)算實(shí)現(xiàn) add(BigInteger val) 返回其值為 (this + val) 的 BigInteger。 subtract(BigInteger val) 返回其值為 (this - val) 的 BigInteger。 multiply(BigInteger val) 返回其值為 (this * val) 的 Big
19、Integer。 divide(BigInteger val) 返回其值為 (this / val) 的 BigInteger。 remainder(BigInteger val) 返回其值為 (this % val) 的 BigInteger mod(BigInteger m) 返回其值為 (this mod m) 的 BigInteger。9 隨機(jī)處理我們常??赡苄枰褂靡恍╇S機(jī)數(shù)。比如掃雷游戲中,地雷的位置。Random類 Random類中實(shí)現(xiàn)的隨機(jī)算法是偽隨機(jī),也就是有規(guī)則的隨機(jī)。在進(jìn)行隨機(jī)時(shí),隨機(jī)算法的起源數(shù)字稱為種子數(shù)(seed),在種子數(shù)的基礎(chǔ)上進(jìn)行一定的變換,從而產(chǎn)生需要的隨機(jī)
20、數(shù)字。 相同種子數(shù)的Random對(duì)象,相同次數(shù)生成的隨機(jī)數(shù)字是完全相同的。也就是說,兩個(gè)種子數(shù)相同的Random對(duì)象,第一次生成的隨機(jī)數(shù)字完全相同,第二次生成的隨機(jī)數(shù)字也完全相同。這點(diǎn)在生成多個(gè)隨機(jī)數(shù)字時(shí)需要特別注意。Random類構(gòu)造方法 public Random():該構(gòu)造方法使用一個(gè)和當(dāng)前系統(tǒng)時(shí)間對(duì)應(yīng)的相對(duì)時(shí)間有關(guān)的數(shù)字作為種子數(shù),然后使用這個(gè)種子數(shù)構(gòu)造Random對(duì)象。 public Random(long seed):該構(gòu)造方法可以通過制定一個(gè)種子數(shù)進(jìn)行創(chuàng)建。 Random類方法 public boolean nextBoolean():該方法的作用是生成一個(gè)隨機(jī)的boolean值
21、,生成true和false的值幾率相等,也就是都是50%的幾率。 public double nextDouble():該方法的作用是生成一個(gè)隨機(jī)的double值,數(shù)值介于0,1.0)之間。例如:生成0,1.0)區(qū)間的小數(shù)double d1 = r.nextDouble();直接使用nextDouble方法獲得。Random類方法 public int nextInt():該方法的作用是生成一個(gè)隨機(jī)的int值,該值介于int的區(qū)間,也就是-231到231-1之間。如果需要生成指定區(qū)間的int值,則需要進(jìn)行一定的數(shù)學(xué)變換,具體可以參看下面的使用示例中的代碼。例如:生成任意整數(shù)int n1 = r
22、.nextInt();直接使用nextInt方法即可。public int nextInt(int n):該方法的作用是生成一個(gè)隨機(jī)的int值,該值介于0,n)的區(qū)間,也就是0到n之間的隨機(jī)int值,包含0而不包含n。如果想生成指定區(qū)間的int值,也需要進(jìn)行一定的數(shù)學(xué)變換,具體可以參看下面的使用示例中的代碼Random類方法public void setSeed(long seed)該方法的作用是重新設(shè)置Random對(duì)象中的種子數(shù)。設(shè)置完種子數(shù)以后的Random對(duì)象和相同種子數(shù)使用new關(guān)鍵字創(chuàng)建出的Random對(duì)象相同示例相同種子數(shù)的Random對(duì)象,相同次數(shù)生成的隨機(jī)數(shù)字是完全相同的,下面是測(cè)試的代碼: Random r1 = new Rand
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年血液透析機(jī)(人工腎)合作協(xié)議書
- 2025年基因工程乙型肝炎疫苗(酵母)合作協(xié)議書
- 2024-2025學(xué)年河南省鄭州市管城區(qū)四年級(jí)(上)期末數(shù)學(xué)試卷
- 2025年排氣系統(tǒng)管件合作協(xié)議書
- 人教版期中測(cè)試卷-四年級(jí)數(shù)學(xué)下冊(cè)(培優(yōu)卷)(含解析)
- 2025年九年級(jí)教研組年終總結(jié)樣本(3篇)
- 2025年乳膠漆粉刷施工合同協(xié)議(2篇)
- 2025年產(chǎn)品買賣合同范文(2篇)
- 2025年二手房分期購房合同(三篇)
- 2025年個(gè)人車位租賃合同參考模板(三篇)
- (正式版)HGT 6313-2024 化工園區(qū)智慧化評(píng)價(jià)導(dǎo)則
- 《社區(qū)康復(fù)》課件-第六章 骨關(guān)節(jié)疾病、損傷患者的社區(qū)康復(fù)實(shí)踐
- 南通市2024屆高三第二次調(diào)研測(cè)試(二模)地理試卷(含官方答案)
- 中外歷史綱要上大事年表
- 高標(biāo)準(zhǔn)農(nóng)田建設(shè)項(xiàng)目監(jiān)理計(jì)劃
- 2024年湖南省公務(wù)員考試行政職業(yè)能力測(cè)驗(yàn)真題
- 攀巖運(yùn)動(dòng)之繩結(jié)技巧課程
- 防打架毆斗安全教育課件
- 小學(xué)二年級(jí)(上冊(cè))-乘法口訣-練習(xí)題-A4直接打印
- 采購行業(yè)的swot分析
- 石家莊長安區(qū)幼兒園信息統(tǒng)計(jì)表
評(píng)論
0/150
提交評(píng)論