




下載本文檔
版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、山西大學(xué)計(jì)算機(jī)與信息技術(shù)學(xué)院姓 名學(xué) 號(hào)專(zhuān)業(yè)班級(jí)課程名稱(chēng)Java實(shí)驗(yàn)實(shí)驗(yàn)日期成 績(jī)指導(dǎo)教師批改日期實(shí)驗(yàn)名稱(chēng)實(shí)驗(yàn)7成員訪問(wèn)控制與異常一、實(shí)驗(yàn)?zāi)康?l) 理解Java包的組織結(jié)構(gòu);(2)學(xué)會(huì)編寫(xiě)帶有包結(jié)構(gòu)的程序;(3)掌握包結(jié)構(gòu)下的成員訪問(wèn)控制。(4)掌握基本異常的處理機(jī)制;(5)熟悉try 語(yǔ)句與catch語(yǔ)句的搭配使用;(6) 了解有異常處理與沒(méi)有異常處理的差別;(7)多重catch 語(yǔ)句的使用;(8)使用Throws聲明異常和Throw拋出異常。二、實(shí)驗(yàn)要求編寫(xiě)3個(gè)類(lèi),類(lèi)名分別為 Clock、A、B,其中類(lèi)Clock 和類(lèi)A放在同一個(gè)包 packone中, 而類(lèi)B則放在另一個(gè)包 packtw
2、o 中,包packone和包packtwo 放在同一個(gè)目錄下。類(lèi) Clock 中 有 3 個(gè)整型數(shù)據(jù) hour、minute、second,它們分別是 public、private、protected, 類(lèi) Clock 還 包含一些方法使用這些數(shù)據(jù)。類(lèi)A和類(lèi)B的功能相似,都是使用類(lèi)Clock并調(diào)用類(lèi)C1ock中的方法。請(qǐng)按照下面的實(shí)驗(yàn)步驟,循序漸進(jìn)的完成實(shí)驗(yàn),并回答后面的問(wèn)題。三、包的使用以及訪問(wèn)控制(1)首先在c:programming目錄下創(chuàng)建一個(gè)文件夾,命名為packone,然后在該文件夾下創(chuàng)建一個(gè)名叫Clock.java 的程序,打開(kāi)文本編輯器按程序清單輸入該程序。程序清單Clock.
3、javapackage packone;public class Clock public int hour;private int minute;protected int second;public Clock( int i, int j, int k) setAll(i, j, k); void setAll( int i, int j, int k) hour = i;minute = j;second = k; public int returngetHour() hour; public intgetMinute() returnminute; public intgetSecon
4、d() returnsecond; (2)接著在packone文件夾下創(chuàng)建第二個(gè)程序命名為A.java,打開(kāi)文本編輯器按程序清單輸入該程序。程序清單A.javapackage packone;public class A System. out .println(" System. out .println(" System. out .println("public static void main(String口 args) Clock c = new Clock(5,20,10);從類(lèi) A中訪問(wèn) Clock hour = "+c.getHour()
5、;從類(lèi) A中訪問(wèn) Clock minute = "+c.minute);從類(lèi) A中訪問(wèn) Clock second = "+c.second);(3)現(xiàn)在在c:programming目錄下創(chuàng)建第二個(gè)文件夾,命名為packtwo,然后在該文件夾下創(chuàng)建一個(gè)名為B.java 的程序,打開(kāi)文本編輯器按如下程序清單輸入該程序。程序清單B.javapackage packtwo; import packone.*;class B public static void main(String口 args) System.out.println("System.out.printl
6、n("System.out.println("Clock c = new Clock(8,30,5);從類(lèi) B中訪問(wèn) Clock hour="+c.getHour();從類(lèi) B中訪問(wèn) Clock minute="+c.getMinute();從類(lèi) B中訪問(wèn) Clock second="+c.getSecond();至此已經(jīng)編輯好了3個(gè)源程序,然后在Eclipse環(huán)境中分別編譯運(yùn)行packone文件夾和packtwo文件夾中的程序,編譯的結(jié)果將分別在 packone文件夾和packtwo文件夾中生成 Clock.class,A.class 和B.
7、class 文件。接著分別運(yùn)行這兩個(gè)程序,觀察程序輸出結(jié)果并分析之。運(yùn)行結(jié)果和分析寫(xiě)在下面。運(yùn)行結(jié)果::peiicksi,四七 psckon .pu b lie c: 1fLmm A pub 1 ic stiat ic void!(Stir i ng argq) Clock c = new Clock 2010).System., our. print 從中訪問(wèn)Clnuk hour -+c, getHour ();System,白紅£ print In ("從中訪問(wèn)1cleick minute " minute) System, 。匕 println ("
8、;AK.賣(mài)A中場(chǎng)間Clock second = second);)| £ MlHriEBn : _ Pmca-piwtiH 工 crvnircDiatji Wqur餐.Exp-lamiFr 匕 *&ni膽p*t工r Mtermir-aite-d* A |Jdva Application EiVPrcfl-ra-m FilwXJiViXtMnavaw.eKe- 2QLZ-12-L7 -FFBzSazSlJ 從炎a中訪問(wèn)cioek hour = 5中黃同 C loek minute 20(m Clock second = 1 O圖一ch project E.un Wbrwdcw
9、hfelp12 Ajww | JI B j-Fv* 2:Spackage packtwo;import packone. *pu/bl L c c 1 e±ss Epublic: s tEit i c vo i d ma i n ( S t r i ng args) (C1 ock c = new Clock (3, 30, 5);Sy s t em, qu r, pr i nt Inf :8'類(lèi) H 中訪® C1 0 ck hour - *+c, get Hour ();System, out, pr intln ("從類(lèi)B中, I:可 Clock mi
10、nute *+c. get Minute C):Sy 云 tem. t?口 pri門(mén)t:lmC從類(lèi)B中,i可C1,0c:k second = get Second ()1 Mji rfcprx Prppf'rtig 4M Xrv7rPmE* Splitc f Faplor-rr 上 nippM C4#M4l4 EWM 3C <tEEi2ted> 0 Java Appficarticn EsSProgram FilesVwaXb4nBrvaw.?x« (D12-L2jJ -FFSjJSiSJ)從類(lèi)H中昉間Clock hour = 3從類(lèi)B中所同Clock minut
11、e = 30從類(lèi)曰中燒向Cock second = 5圖二答:使用private修飾符可以完全隱藏類(lèi)的成員,在類(lèi)外不能直接訪問(wèn)它們;使用 protected修 飾符的類(lèi)成員,允許任何包中的子類(lèi)或同一包中的類(lèi)訪問(wèn)它們;使用public修飾符的類(lèi)成員, 允許任意類(lèi)訪問(wèn)它們。改成 Clock(int i,int思考(1)現(xiàn)在請(qǐng)將 Clock 類(lèi)的構(gòu)造函數(shù) public Clock(int i,int j,int k)j,int k)然后分別運(yùn)行 A.class 和B.class,觀察所得結(jié)果。arch P rEii|Mt t RtinH*lp曲 息jzm :v g:IZ.packone ;publi
12、c dla臺(tái)占 A (pub Lie static void main CSt ring J args) ( Clock c new Cl-oelkJ,5, 20, 10).System. oi/f8 print In 從苕A中訪口可Iqck hourSy stem. 0£/以 pririt In A/vgfeA1 ockSy s t em. out、j>rin11 n ( 從中訪 ipJClockminut «r sec ondc - set H*Ur O ),+e . nii riu-t e);一£ . s*?c end ) P'«?-
13、»1 > 中ij - A 口仆一小' ci-s-l E .Mu一 u'H'l Jt-Ueig、in” I”。值產(chǎn)t *'?, 1 i Ji 正訪1號(hào)Cloek hour飆t。訪問(wèn)C lock mi nul;ettr |HC lock second = IO圖三ach Project 蜘 n Bfindcw Hdp求I C 。, I 6日,II M /口 ° II |,Quick 4國(guó) Ajdvh Mi B.jAvt FR ClMk.jirvapackage paektwo;import packone- *;publie cInss B
14、publ ic static voi d main (Str ing iargs) © .Clack c = new Clack (Sj 30, 5) t .System. 口口£ ptint In (" .產(chǎn)11,類(lèi)B中i方問(wèn) 1cl口ck minute - " +c. gctMinute ();System, owr, print In C 11 Clock second = getSecondE);心 Sy擊 tunr. or. pfin* Lii二從類(lèi)B中訪問(wèn)Cl心七k hour = "+a tHour():鱷 Daui Sluice
15、Explajon in thread *mai n-F java. I ang. |Thetype Clock isnot v i s ibleThet;ypc Clock isnot vis iblcThetype Cloak isnot vi g j b1eThetype Clock isnot visibleThetype Clock isnot visibleEtFEinMM *-$pplk|T$<n| E: WrQfa4用 wXbinpj*” i;MH J - U - 1 fi _b= i 1 :2七:ia t pack two. B. ma i n (Ek java : 5)
16、Tirnr ; Unr esa 1 ved compi 1 At join prob I emf?:圖四答:使用默認(rèn)修飾符的類(lèi)不能被其他包中的類(lèi)訪問(wèn)。(2)由于在 B.Java 程序中使用了 import packone.*語(yǔ)句從而導(dǎo)入了 packone包中的Clock類(lèi),但是 import packone.*這種寫(xiě)法僅僅導(dǎo)入指定包中的Clock 類(lèi)的聲明 public class Clock改成 class Clock,public 類(lèi),如果現(xiàn)在將 測(cè)試一下程序運(yùn)行會(huì)報(bào)錯(cuò)嗎答:會(huì)報(bào)錯(cuò),如圖四。(3)用import語(yǔ)句可以導(dǎo)入所需的類(lèi)就必須帶上完整的包路徑?,F(xiàn)在請(qǐng)把B.java如果不想使用im
17、port 程序做如下的修改:語(yǔ)句,那么在使用包中的類(lèi)時(shí)main(String口 args) packone.Clock c =System. out .println("package packtwo;class B public static voidnew packone.Clock(8,30,5);從類(lèi) B中訪問(wèn) Clock hour = "+c.getHour();System. out .println("從類(lèi) B中訪問(wèn) Clock minute = "+c.getMinute();System. out .println("從類(lèi) B
18、中訪問(wèn) Clock second = "+c.getSecond();然后編譯運(yùn)行,觀察結(jié)果是否正確。paokeigiQ pack two ;pub Lie 心 la,呂 s B pubIic 叁t衽七ie void main (StringCJ args) (paLckotie. Clock c = new packone. Clock (8? 30? 5);Sy g t它m. ou*. print Ln (k從類(lèi)E中坊f可Cleck hour = getHour ():Svstem. out. pr int In £:從類(lèi)8中訪問(wèn)Clock minute = "
19、;"+ca getMinuteC);System, an仁 print In從類(lèi)R 中 訪(可C lack second =中 +匚,gexSeccnd ();IT IM-rifc是e PepEMi 黑后沿 Qat. S9wrcfTfitvrrr $»pprt» S GmnM。£3M -»«trr :rii r n1«-d B :1&寸注 Ap |jli- iitiE; r | E'.Pr c; u| , rtm FiIJr«vh:n'ij i»vmiv»°.
20、f ,:f i J :!1 L J = L 7 28 J_ 11: L H :D7;從類(lèi)B中訪問(wèn)Cloek hour = 8從類(lèi)R中訪問(wèn)C1 ock mi nnXe = 30隊(duì)中訪問(wèn)Cloizk second = 5圖五(4)在 A.java 和 B.java 程序中分別通過(guò) getHour() 、getMinute() 和 getSecond()訪問(wèn) 了 Clock類(lèi)的數(shù)據(jù)成員,請(qǐng)問(wèn)能否不通過(guò)這幾個(gè)方法而直接訪問(wèn)Clock類(lèi)的數(shù)據(jù)成員呢?現(xiàn)在System.out.println(System.out.println(System.out.println(請(qǐng)把A.Java程序的相關(guān)部分作如下修
21、改來(lái)進(jìn)行測(cè)試,編譯運(yùn)行觀察結(jié)果。從類(lèi) A 中訪問(wèn) Clock hour="+c.hour);從類(lèi) A 中訪問(wèn) Clock minute="+c.minute);從類(lèi) A 中訪問(wèn) Clock second= + c.second);答:如圖六知,類(lèi)Clock成員hour不可被同一包內(nèi)的其他類(lèi)直接訪問(wèn)。Bj. Markers O Propenties HL Saverststa Source- EHfutorBr | Snippets Q Console 潭 * * | G-向1P±-11:32:44)Excep tion i n. thread "&quo
22、t;niEiin* javu. Icirig. Error: Lfnreso 1 ved compi lution prob 1 em: The f ic 1 dl Clock. miniitc i s not visibleat packone, A. cnain (A. iava; 6)圖六接著請(qǐng)把B.java程序的相關(guān)部分也作類(lèi)似的修改并進(jìn)行測(cè)試,編譯運(yùn)行觀察結(jié)果。System.out.println("從類(lèi)B中訪問(wèn)Clock hour="c.hour);System.out.println("從類(lèi)B中訪問(wèn)Clock minute="+c.minu
23、te),System.out.println("從類(lèi)B中訪問(wèn)Clock second="+c.second);答:如圖七知,類(lèi)Clock成員hour和second不可被其它包內(nèi)的類(lèi)直接訪問(wèn)。packoniE. Clock c = new packonc- CL<>ck (87 30, 5);Systeio. out. printinghour = "+c- hour);5%皚y 他工printin 從美日中訪問(wèn)dock ininute = "+*破叫1星, System,白里工 print In 從美8申訪問(wèn)dock second = &qu
24、ot;+如 &ggud);i, RgwtiK i4HH kipf r自 空.:X - I * R 南函I Mcbvrminal»d SJmi Appl1在0間 RiPTQgrn v>w.vsv 使91基1薩姆 上午JL34?4工IEjccept ion in thread *oiain javiat. lang:. Error: Unresolved compi 1 at ion probl e-nis : The field Clock, ininute is not visible The field Clock, secondl is not visibleat
25、paektwo- Ba main(B. java:6)圖七分析上述程序的運(yùn)行結(jié)果,然后填寫(xiě)下表(可訪問(wèn)寫(xiě)1,不可訪問(wèn)寫(xiě)0)。hour (public )minute(private)second(protected)骸101100四、java異常實(shí)驗(yàn)(1) 除數(shù)為零異常實(shí)驗(yàn)?zāi)康模?1)掌握基本異常的處理機(jī)制;(2)熟悉try 語(yǔ)句與catch 語(yǔ)句的搭配使用(3) 了解有異常處理與沒(méi)有異常處理的差別(4)多重catch 語(yǔ)句的使用 ;(5)使用 Throws 聲明異常和Throw 拋出異常。實(shí)驗(yàn)任務(wù):在這個(gè)實(shí)驗(yàn)里會(huì)通過(guò)3個(gè)練習(xí)來(lái)開(kāi)發(fā)一組相應(yīng)的異常處理程序,以鞏固對(duì)異常處理的理解。這幾個(gè)程序都是
26、圍繞著一個(gè)典型的除數(shù)為0和數(shù)值格式異常問(wèn)題而展開(kāi)的,用戶(hù)將從一個(gè)最簡(jiǎn)單的控制臺(tái)輸出的除數(shù)為0異常程序開(kāi)始,然后建立一個(gè)GUI環(huán)境下的除數(shù)為0異常的多catch 塊處理,直到最后建立一個(gè)GUI環(huán)境下自己Throw拋出 異常的處理程序。所有這些程序都將建立在同一個(gè)Project 項(xiàng)目中,依次開(kāi)發(fā),各自獨(dú)立運(yùn)行。實(shí)驗(yàn)步驟:1 .練習(xí)1普通控制臺(tái)下的除數(shù)為O異常程序這個(gè)練習(xí)可以讓用戶(hù)比較有無(wú)異常處理時(shí)的情況。(1)首先建立一個(gè)空項(xiàng)目命名為Exception,然后為該項(xiàng)目選擇合適的路徑Directory 存放它,比如:C: Programming JavaProject,用戶(hù)將在這個(gè)項(xiàng)目中開(kāi)發(fā)本實(shí)驗(yàn)的所
27、有程序。(2)現(xiàn)在在該項(xiàng)目中創(chuàng)建第1個(gè)程序命名為DivideByZero.java,這個(gè)程序中包含了一個(gè)Public 類(lèi)DivideByZero.java, 不使用Package,請(qǐng)按照程序清單6-1輸入該程序。程序清單 6-1 DivideByZero.java / DivideByZero.javapublic class DivideByZero private int denominator,numerator,quotient; public DivideByZero() denominator = 3;numerator = 12;quotient = quotient(numer
28、ator,denominator);System. out .println("Quotient is "+quotient); public int quotient( int numerator, int denominator) return numerator/denominator;public static void main(String口 args) DivideByZero application = new DivideByZero(); (3)編輯好源程序并保存,編譯并運(yùn)行,看到的結(jié)果是多少 ?接下來(lái)修改源程序中 的denominator 值,以評(píng)估1
29、2/7,12/0時(shí)的情況。當(dāng)12/0 時(shí),觀察到了什么 ?是否有異常發(fā)生,輸出結(jié)果是什么?國(guó) Dhide-Of Zefa'i :二public class DivideByZeio (private int denctinatorh numeraterquotiert;public DividflBZerc)dtnofflinator = 3,numerator = 12:quotient = quotient (numeraTar, dencuninator);Sys tea. our. print In (*Quot rent is,*+quoti£nt);public
30、class DivideByZero private int denominator,. nmneratQrs quotient.public DiviiieEyZero01denominator = 7;nuDerator - 12;quotient = quotient(numeratordencainator);System, out. print In CQucti ent is Jr+quotient);public int quQtient(int numerator, int dencainator): return nuinerator denominator,public i
31、nt 4UDriEAtdnL tiuaieratar, int denominator) return nunierator dencminator;public static void main(STring args) public static v&id main(String args);DividcByZ?rp applit曰tion = n已卬 DivideByZeroO ;DivideEyZero appication = new DivideByZero0 :blcms 6 Jiwdoc 蜃快由1舊 目 rEKJe 筮<>FffTTMrwted> 而也
32、即Jctg 口日抽 Mplifim E%Ogw<r國(guó)小山山上扁間hwewe 2D12-12-1B 下午234必;Quotient is 4PrabtaTts- kn-adoc . Dedar-arliai Q Comclt'termhaled* DivideElyZera Jara Appfiulicml E:PrcgME|2OU-12-1B 下午亡上后二出Quotient is 1|圖八圖九prt Bun tfrdaw Help |必三.一 t圖十(4)現(xiàn)在請(qǐng)?jiān)诠こ讨袆?chuàng)建第 序中加入以下的一組try/catch該程序在上面的程2 個(gè)程序命名為 DivideByZeroTryCa
33、tch.java,語(yǔ)句塊,以處理除數(shù)為0時(shí)才發(fā)生的異常。try quotient = quotient( numerator, denominator );System.out.print("Quotient is " + quotient);catch(ArithmeticException ex)System.out.print("I found exception " + ex.toString();(5)編譯并運(yùn)行這個(gè)程序,觀察運(yùn)行結(jié)果。運(yùn)行結(jié)果貼圖:ect Bwn Windigw 1tHpR k I L* S *' I,<不W K
34、J FG F 9 *Quitfc. A cot aJTj DI-/ideyZero.ja¥lA | j/j Di-ideByZefflTiyCftchjaM14 翦pub lie c 1 fiss Di vi deByZeroTryCat ch private inX denominatorB numerator, Quotient; public DivideByZeroTryCatch() decom i nator = 0; numerator = 12;try quot ient = quot ient(numeratot? denomi nator);System, out
35、. print In ("Quotient is "r+Quot ient); catch (Arit hmc t i c E x c e pt i on ex.) Systein, print In ("I found exception "r+ex, toString ();)pub lie i nt quolz i errt ( 1 nt numerator, i n t denami nat:or) | return iLLhnei;;j. 1. cu - deci。m工口匕 Lor ,pub lie stat: ic void main (St
36、r ing I . aigs) Divide By Z er oT xy Ca t c h applicait ion = new Di videByZeroTr y Catch ();k PWems 的doc 口 0-on 國(guó) Console E3. X % | 冷砂困口-t-6-rcr'iiwiAiEA-d « Divide ByZ*reTryCAljeh Java A.RplrLadeirl E:Pr-&§rirTi Fil«lVvAVbiAvdw.«x«ZOIN 12-LBI £oUnd ox ccpt ion
37、 jaiVEi. Iel口穌. Azr i七h(yuǎn)mu,i c Exc已口七 i0n :. / by z cro圖十一|點(diǎn)評(píng)|由于加入了 try/catch 語(yǔ)句, 因此由函數(shù) quotient(numerator,denominator) 所產(chǎn) 生的異常被捕獲并進(jìn)行了處理,記住try/catch語(yǔ)句必須搭配使用,如僅僅有try 語(yǔ)句而無(wú)catch語(yǔ)句會(huì)導(dǎo)致編譯錯(cuò)誤。2 .練習(xí)2 GUl圖形環(huán)境下的多catch塊異常處理上面的程序是普通控制臺(tái)環(huán)境下發(fā)生除數(shù)為0異常的情況,現(xiàn)在我們要看看GUI圖形環(huán)境下的除數(shù)為0時(shí)的異常情況。(1)現(xiàn)在在工程中創(chuàng)建第3個(gè)程序命名為DivideByZeroGUI.ja
38、va,這個(gè)程序運(yùn)行時(shí)會(huì)彈出圖形化窗口,要求用戶(hù)輸入數(shù)值進(jìn)行除法運(yùn)算。請(qǐng)按程序清單 6-2輸入該程序。程序清單 6-2 DivideByZeroGUI.java/ DivideByZeroGUI.javaimport java.awt.*;/ Container, GridLayoutimport java.awt.event.*; / ActionListenerimport javax.swing.*; / JFramepublic class DivideByZeroGUI extends JFrameimplements ActionListenerprivate JTextField
39、numeratorField, denominatorField, outputField;private int denominator, numerator, quotient;public DivideByZeroGUI()super(" 除數(shù)為0異常");Container container = getContentPane();container.setLayout( new GridLayout( 3, 2 );container.add(new JLabel("輸入被除數(shù) ", SwingConstants.RIGHT );numerat
40、orField = new JTextField( 10 );container.add( numeratorField );container.add(new JLabel("輸入除數(shù)并回車(chē) ",SwingConstants.RIGHT );denominatorField = new JTextField( 10 );container.add( denominatorField );denominatorField.addActionListener( this );container.add(new JLabel("結(jié)果",SwingConsta
41、nts.RIGHT );outputField = new JTextField();container.add( outputField );setSize( 425, 100 );setVisible( true );public void actionPerformed( ActionEvent event )outputField.setText("");numerator = Integer.parseInt( numeratorField.getText();denominator= Integer.parseInt( denominatorField.getT
42、ext();quotient = quotient( numerator, denominator );outputField.setText( Integer.toString(quotient);public int quotient( int numerator, int denominator )return numerator / denominator;public static void main( String args)DivideByZeroGUI application = new DivideByZeroGUI();application.setDefaultClose
43、Operation(JFrame.EXIT_ON_CLOSE);(2)編譯并運(yùn)行這個(gè)程序,觀察運(yùn)行結(jié)果。運(yùn)行結(jié)果貼圖:,畫(huà)除數(shù)為0異常j 回輸入械除數(shù)二輸入除躺并回車(chē)結(jié)果思考沒(méi)有異常。 評(píng)估12/3,12/7 的結(jié)果,有異常嗎?的結(jié)果,看到了什么?是異常嗎?若是異常請(qǐng)解釋原因并分別圖十二(2)評(píng)估 12/0,12/2.2,12/a指出導(dǎo)致異常發(fā)生的語(yǔ)句。rabfiem 制陋 Declw-rt»on 口 tansoie XI |DindaByZirnGU匚E:%匕/ 上ETMMkD51)Except ion in thread AWT-Event'Qucue-O* iava.-
44、 lELnw. Atithniut icE/CE口t;inn: / by zero at Di vi deHyZeraGGJl. quot i.ent f Ui - i dieH亨Ze口GU JL java.二 3?).ut Di v ideByZeroGUI« sct ionPerformed Di - id£lBvZuoGUIa iHMai: 28j etF icld. f ircAct ionPcrformcd (Unknown ScUrc;e) ItF i eld. pos"tAet i on Event (Unknown Source)rtF i eld
45、$Not i f yAc tion- act ionF er formed (UnknoiWTi Sourcft) fgUt ili ties, not ifyAc t ion (Unknown Source) p.panenX. processKeyBinding(Unknown Source)圖十四郵wns # IgdK.。我"而“口 笈口川。永巾如JE 即pfia由叨已蟹邙*越打前12門(mén)工13 TW647LWIExcept ion in ttireiEid *AffT-EvcntQuEme-O1日¥口一 1日n十.HumbcrFormatEjecerpticm: Fo
46、r input string : *2. 2* at java. lang. NujDbgrFgTiiimtEfe叩K at java. Integer, par sei tit (Uiikfi&irn Soutte) at java. lang. Integer, parselnt (Unknoirn Source)1 at DivideEyZeroCUI. actionFerfarmedDividlBBYEEr口GUL iaY埴:£7)I reAc t i onPerfwiaed (UnJtnown Sou.rce) tAc t i onEvcnt (Unknown. S
47、ource)ion. actionPerformed(Uaknovn Source)&S. notifyActi&n (Uriknon S&urce-) racessKeyBi nding (Unkno-wn Source)圖十五QiCmmIc NISvhI吟ZeGLI Je 知田*口向 w勺am后上叩1山燈河mwor QO-U-UJE下=&氧咽Exception in thread AWT-EventQueue-O* /。單口. lanjg. Nunib6rFcirnjELtEicccsDtiu”. For input string: at java_ 1 a
48、ng NurnberForma tEi c ept ion- for Input St ri ng (Unknown Source at java. lang. Inteser. parse I nt (Unknown Source) at java. lanR:. Intcser. prselnt (Unknown Source) at DividcBy2craCUI. actionPcrformed(DividcBvZ.dCUL ja竄el:27) jjeAct i onPerfarmed (UnknD<n.e)ks t Ac I i onEw en t (Unknown Sou.r
49、 ce) iitifyAction. act ionPerformed (Unknown Source) i-s. not i f'yA c t i on (Unknown Source) boc:«Rinding (Unknown Source)圖十六答:均有異常。其中12/0是由語(yǔ)句"quotient=quotient(numerator,denominator);return numerator/denominator;”引起,因?yàn)槌龜?shù)不能為零;而 12/2.2 和12/adenominator=Integer.parseInt(denominatorFiel
50、d.getText();”與語(yǔ)句是由語(yǔ)句 因?yàn)檩斎胱址畱?yīng)可以轉(zhuǎn)換為int型數(shù)據(jù)。|點(diǎn)評(píng)|這個(gè)程序會(huì)因?yàn)槌龜?shù)為0和數(shù)值格式而導(dǎo)致異常不過(guò)與前面的練習(xí)l程序不同的是,盡管產(chǎn)生了異常 進(jìn)行其他的除法運(yùn)算。這個(gè)基于GUI的程序仍然可以繼續(xù)運(yùn)行而不會(huì)退出這使用戶(hù)可以繼續(xù)接下來(lái)創(chuàng)建程序該程序應(yīng)包含兩個(gè) catchDivideByZeroGUIMultiTryCatch.java以處理上面程序中所產(chǎn)生的異常語(yǔ)句塊,一個(gè)用于處理除數(shù)為0的異常,另一個(gè)用于處理數(shù)值格式輸入的異常。由于在程序中使用了Integer.parseInt()方法以獲得用戶(hù)輸入的數(shù)值因此當(dāng)用戶(hù)輸入非整數(shù)時(shí)就會(huì)產(chǎn)生NumberFormat
51、Exception 異常,這個(gè)異常同樣應(yīng)該處理。catch (NumberFormatException ex)System.out.print("I detected exception " + ex.toString);編譯并運(yùn)行這個(gè)DivideByZeroGUIMultiTryCatch.java 程序,確保已經(jīng)處理了上述的兩個(gè)異常。評(píng)估12/0,12/1.5,12/e,并寫(xiě)下所觀察到的程序運(yùn)行結(jié)果。參考代碼:import java.awt.*;import java.awt.event.*;import javax.swing.*;public class Divi
52、deByZeroGUIMultiTryCatch extends JFrame implements ActionListenerprivate JTextField numeratorField,denominatorField,outputField;private int numerator,denominator,quotient;public DivideByZeroGUIMultiTryCatch()super ("除數(shù)為0異常");Container container = getContentPane();container.setLayout( new G
53、ridLayout(3,2);container.add( new JLabel(" 輸入被除數(shù):",SwingConstants.RIGHT);numeratorField = new JTextField(10);container.add(numeratorField);container.add( new JLabel("輸入除數(shù)并回車(chē)",SwingConstants.RIGHT);denominatorField =new JTextField(10);container.add(denominatorField);denominatorFie
54、ld.addActionListener( this );container.add(new JLabel("結(jié)果:",SwingConstants. RIGHT);outputField =new JTextField();container.add(outputField);setSize(425,100);setVisible( true );public void actionPerformed(ActionEvent event)outputField.setText("");try numerator = Integer. parseInt
55、(numeratorField.getText();denominator = Integer. parseInt (denominatorField.getText();quotient = quotient(numerator,denominator); catch (ArithmeticException ex)System. out .println("I found exception "+ex.toString();catch (NumberFormatException ex)System. out .println("I detected exce
56、ption "+ex); public int quotient( int numerator, int denominator)return numerator/denominator;public static void main(String 口args)DivideByZeroGUIMultiTryCatch application =new DivideByZeroGUIMultiTryCatch();application.setDefaultCloseOperation(JFrame.EXIT_ON_CLOS E一 一運(yùn)行結(jié)果:Frable 效 Javadoc Decl
57、jration ' 0 Conwle £1 M | 耳 £DfS?U(iMid-aByZvr-aGiUlMuleiTiyCaEth AplicaBicnjFilvAXJjivaVlsinAvflriH.AK* (2012- 12-1B -F-Bc24:SflQI f ound cxcopt i on jawEi- Ifiiijg. Ar ii cEbec:七口七 1口口 : / by zero圖十七- P-r m AfvridcrQ 由加 S* * 唯 | W 國(guó)畫(huà)畫(huà)| tf 0 一n0MdeflyJdvd Afjplkrtion) E:P*ogram 6加千嘲日丫日黃由"日¥日也士« (2O12-12-16 TPFflmWlZlI detected exception i- vh 1 日力w.NumbierFormatE”七心口tion: For input string; * 1. 5*圖十八二Piobhrnx Q "皿一餐n 0匚
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 超市購(gòu)物賠償協(xié)議書(shū)
- 勞動(dòng)合同帶保密協(xié)議書(shū)
- 鍛件產(chǎn)品開(kāi)發(fā)協(xié)議書(shū)
- 閑置電纜出讓協(xié)議書(shū)
- 營(yíng)運(yùn)班車(chē)合伙協(xié)議書(shū)
- 解雇保姆合同協(xié)議書(shū)
- 陽(yáng)臺(tái)封窗安全協(xié)議書(shū)
- 項(xiàng)目合作攝影協(xié)議書(shū)
- 酒席用品轉(zhuǎn)讓協(xié)議書(shū)
- 慢性子裁縫的課件
- 蜜雪冰城合作加盟合同
- 新聞?dòng)浾呗殬I(yè)資格《新聞基礎(chǔ)知識(shí)》考試題庫(kù)(含答案)
- 妊娠紋的治療
- 古詩(shī)教案模板范文
- 屠宰場(chǎng)安全培訓(xùn)
- 氣管插管完整版本
- 光伏電站運(yùn)維課件
- 廠區(qū)綠化環(huán)境提升方案
- 科研機(jī)構(gòu)科技創(chuàng)新激勵(lì)制度
- 2024年江蘇省鹽城市中考語(yǔ)文真題
- 產(chǎn)品代理合同協(xié)議書(shū)2024年
評(píng)論
0/150
提交評(píng)論