版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
模塊4
常用API和異常目標(biāo)知識(shí)目標(biāo):技能目標(biāo):素質(zhì)目標(biāo):了解API的概念熟悉常用的API熟悉包的概念理解異常的概念會(huì)使用常用的API處理實(shí)際問題會(huì)定義和使用包會(huì)在程序設(shè)計(jì)中處理異常培養(yǎng)學(xué)生善于使用工具的能力鼓勵(lì)學(xué)生進(jìn)行創(chuàng)新,推進(jìn)我國(guó)軟件產(chǎn)業(yè)的高質(zhì)量發(fā)展任務(wù)4.1使用字符串類【任務(wù)導(dǎo)入】任務(wù)4.1使用字符串類從傳說中的倉(cāng)頡造字至今,中文字符有長(zhǎng)達(dá)數(shù)千年的演化歷史。文字是人類知識(shí)傳承、文化延續(xù)的重要載體。無論古今,大量的數(shù)據(jù)、資料都以文字的形式記錄保存。怎么能更快捷的處理字符?我們需要了解并熟悉String類,以及String類中處理字符串的各種API方法。掌握工具方法,能提高程序的開發(fā)效率。API(ApplicationProgrammingInterface,應(yīng)用程序接口),是一些預(yù)先定義好的類和接口,用戶可以根據(jù)功能需要直接使用,不需要理解內(nèi)部的實(shí)現(xiàn)機(jī)制。任務(wù)4.1使用字符串類此外,Java為了更好的管理類和接口,將它們以包的形式組織起來,方便程序員的查找和使用。下面介紹幾個(gè)常用包的名稱和用途。java.lang包:java的語言包,是核心包,默認(rèn)導(dǎo)入到用戶程序,包含了基本數(shù)據(jù)類型的封裝類、Object類,數(shù)學(xué)類,字符串類,系統(tǒng)和運(yùn)行時(shí)類,操作類,線程類,錯(cuò)誤和異常處理類等。java.io包:包含了輸入輸出功能的類和接口,主要用于數(shù)據(jù)的輸入和輸出。java.awt包:包含了繪圖和圖像類和接口,主要用于編寫GUI程序。java.util包:包含了實(shí)用工具類和接口,如集合類、時(shí)間處理模式、日期時(shí)間工具等。包:包含了執(zhí)行與網(wǎng)絡(luò)有關(guān)的類,如Url,Scoket,Seversocket等。java.sql包:包含了處理數(shù)據(jù)庫的相關(guān)類和接口。4.4.1String類
字符串就是一連串的字符。Java語言使用String類對(duì)字符串進(jìn)行處理。String類存放在java.lang包中,使用時(shí)不需要導(dǎo)入這個(gè)包直接用就行。方法功能描述charcharAt(int
index)返回index指定索引處的字符,注意字符串中第一個(gè)字符索引是0,最后一個(gè)是length()-1。Stringconcat(String
str)將指定的字符串連接到該字符串的末尾。intcompareTo(StringotherString)對(duì)字符串內(nèi)容按字典順序進(jìn)行大小比較,通過返回的整數(shù)值當(dāng)前字符串與參數(shù)字符串的大小關(guān)系。若當(dāng)前對(duì)象比參數(shù)大則返回正整數(shù),反之返回負(fù)整數(shù),相等返回0。booleanendsWith(String
suffix)測(cè)試此字符串是否以指定的后綴結(jié)尾。booleanequals(Object
anObject)比較當(dāng)前字符串和參數(shù)字符串,在兩個(gè)字符串相等的時(shí)候返回true,否則返回false。intindexOf(String
str)返回指定子字符串第一次出現(xiàn)的字符串內(nèi)的索引。任務(wù)1字符串類booleanisEmpty()僅當(dāng)
length()為
0,
返回
true。intlength()返回此字符串的長(zhǎng)度。Stringreplace(char
oldChar,char
newChar)返回新的字符串,是用newChar替換所有出現(xiàn)的oldChar
。StringreplaceAll(Stringregex,Stringreplacement)用字符replacement的內(nèi)容替換當(dāng)前字符串中遇到的所有和字符串regex相匹配的子串,將新的字符串返回。String[]split(String
regex)將此字符串用regex分割為幾個(gè)字符串。booleanstartsWith(String
prefix)測(cè)試此字符串是否以指定的前綴開頭。Stringsubstring(int
beginIndex,int
endIndex)返回一個(gè)字符串,從beginIndex位置起,從當(dāng)前字符串中取出到endIndex-1位置的字符作為一個(gè)新的字符串返回。StringtoLowerCase()
將所有在此字符
String使用默認(rèn)語言環(huán)境的規(guī)則,轉(zhuǎn)換為小寫。StringtoUpperCase()
將所有在此字符
String使用默認(rèn)語言環(huán)境的規(guī)則,轉(zhuǎn)換為大寫。Stringtrim()
返回一個(gè)字符串,其值為此字符串并刪除任何前導(dǎo)和尾隨空格。
publicclassDemo{publicstaticvoidmain(String[]args){//直接賦值創(chuàng)建String類對(duì)象Strings1="Java#programming";//使用new關(guān)鍵字創(chuàng)建String類對(duì)象Strings2=newString("Java");//小寫轉(zhuǎn)大寫System.out.println("abc".toUpperCase());//大寫轉(zhuǎn)小寫System.out.println("ABC".toLowerCase());//String類的equals方法判斷字符串是否相等(區(qū)分大小寫)System.out.println("abcd".equals("ABCD"));//String類的equals方法判斷字符串是否相等(不區(qū)分大小寫)System.out.println("abcd".equalsIgnoreCase("ABCD"));//按字母表順序比較字符串:兩個(gè)字符串相同,返回0;//字母順序在參數(shù)中的字符串前,則返回小于0的數(shù),否則返回大于0的數(shù)System.out.println("abcd".compareTo("abcd"));System.out.println("abcd".compareTo("wxyz"));System.out.println("wxyz".compareTo("abcd"));//獲得某個(gè)子串在字符串中首次出現(xiàn)的位置,第一個(gè)位置為0System.out.println(s1.indexOf("prog"));//返回5任務(wù)1字符串類例4.1字符串String類的使用演示。任務(wù)1字符串類例4.1字符串String類的使用演示。//是否包含另一個(gè)字符串System.out.println("abcde".contains("bc"));//去除字符串頭尾的空格Stringsource="abc123def";Stringstr=source.trim();System.out.println("去除空格前:"+source);System.out.println("去除空格后:"+str);//取字串,從第i個(gè)字符取到第k個(gè)字符(從0開始編號(hào))System.out.println("取子串:"+"abcdefg".substring(1,4));//字符串替換Stringresult=s1.replaceAll("a","*");System.out.println(s1+"替換后的結(jié)果是:"+result);}}//其他類型數(shù)據(jù)轉(zhuǎn)換為字符串的方法intlen=s1.length();//length方法用于獲得字符串的個(gè)數(shù)StringsLen=String.valueOf(len);//int類型轉(zhuǎn)換為字符串System.out.println(s1+"的長(zhǎng)度是"+len);//使用指定的分隔符,拆分字符串,返回一個(gè)數(shù)組String[]parts=s1.split("#");//以#作為分隔符,拆分s1for(inti=0;i<parts.length;i++){System.out.println("拆分的第"+(i+1)+"部分是:
"+parts[i]);}練一練1、編寫程序,統(tǒng)計(jì)"Constantdroppingwearsthestone"當(dāng)中有多少個(gè)單詞。2、編寫程序,將"gdaib"全部修改成大寫。4.1.2StringBuffer類StringBuffer類和String類都是用來處理字符串的,都位于java.lang包中,與String類不同的是,StringBuffer類的對(duì)象能夠被多次的修改,并且不產(chǎn)生新的未使用對(duì)象,它主要用于設(shè)計(jì)創(chuàng)建和操作動(dòng)態(tài)字符串,所以如果需要對(duì)字符串進(jìn)行修改建議使用StringBuffer類。其主要API如下:方法功能描述StringBuffer()構(gòu)造一個(gè)空的字符串緩沖區(qū)。StringBuffer(Stringstr)通過指定的字符串來構(gòu)造StringBuffer對(duì)象。4.1.2StringBuffer類StringBufferreverse()將此字符序列倒置。StringBufferdelete(intstart,intend)移除指定范圍中的字符。StringBufferdeleteCharAt(intindex)刪除指定位置的字符StringBufferinsert(intoffset,Strings)在StringBuffer對(duì)象中插入內(nèi)容,然后形成新的字符串StringBufferreplace(intstart,intend,Stringstr)使用給定String中的字符替換此序列的子字符串中的字符。voidsetCharAt(intindex,charch)修改對(duì)象中指定位置index位置的字符為新的字符ch。intlength()返回字符串的長(zhǎng)度(字符數(shù))試一試?yán)?.2StringBuffer類的使用演示//直接賦值創(chuàng)建StringBuffer類對(duì)象 StringBuffers1=newStringBuffer(); StringBuffers2=newStringBuffer("Javaprogram");//獲取字符串緩沖區(qū)的長(zhǎng)度 System.out.println(s1.length()); System.out.println(s2.length()); //字符串緩沖區(qū)中添加內(nèi)容 s2.append("andCprogram"); System.out.println(s2); //刪除指定范圍字符 s2.delete(0,4); System.out.println(s2); //修改指定范圍字符 s2.replace(0,8,"c#"); System.out.println(s2); //將字符串進(jìn)行逆序 s2.reverse(); System.out.println(s2);實(shí)戰(zhàn)演練4-1:統(tǒng)計(jì)子串在母串中出現(xiàn)的次數(shù)編寫程序,統(tǒng)計(jì)某一個(gè)子串在母串中出現(xiàn)的次數(shù)。例如,母串“abcgabcbcabccbabc”,子串“abc”在母串中出現(xiàn)的次數(shù)是4。輸出結(jié)果,如圖4.3所示。實(shí)戰(zhàn)演練4-1:統(tǒng)計(jì)子串在母串中出現(xiàn)的次數(shù)【任務(wù)分析】(1)使用String類處理數(shù)據(jù)。(2)使用contains()方法,先判斷子串是否在母串中存在,不存在直接返回0。如果存在,再使用indexof()方法獲取子串在母串中第一次出現(xiàn)的位置,并計(jì)數(shù)。然后,除去剛才找到的子串,將剩下的串構(gòu)造一個(gè)新的母串,繼續(xù)尋找。任務(wù)4.2使用工具包【任務(wù)導(dǎo)入】任務(wù)4.2使用工具包程序除了要對(duì)字符串進(jìn)行處理之外,也常常需要對(duì)數(shù)值型的數(shù)據(jù)做數(shù)學(xué)運(yùn)算。生活和工作中,常常需要比較兩個(gè)數(shù)的大小、三角函數(shù)運(yùn)算等操作;也需要對(duì)時(shí)間日期進(jìn)行比較。這些復(fù)雜的數(shù)學(xué)計(jì)算、時(shí)間比較的功能是否需要程序員自行編程實(shí)現(xiàn)呢?如何保證運(yùn)算和比較的準(zhǔn)確性?Java編程語言以工具包的形式,向程序員提供常用數(shù)學(xué)和日期運(yùn)算的功能。在工作崗位上,我們也需要根據(jù)實(shí)際需求情況和軟件特點(diǎn),對(duì)使用頻率高的功能點(diǎn)進(jìn)行封裝,提高軟件的質(zhì)量。1.常用的數(shù)學(xué)公式如何表示?2.如何生成隨機(jī)數(shù)?3.能對(duì)日期做什么運(yùn)算?【思考】4.2.1數(shù)學(xué)類java.lang.Math類是一個(gè)包含了兩個(gè)數(shù)學(xué)常量和若干基本數(shù)學(xué)運(yùn)算方法的類,是編寫數(shù)學(xué)運(yùn)算類程序時(shí)常用的類。4.2.1數(shù)學(xué)類方法聲明功能描述abs()該方法用于計(jì)算絕對(duì)值sqrt()該方法用于計(jì)算方根ceil(a,b)該方法用于計(jì)算大于參數(shù)的最小整數(shù)floor()該方法用于計(jì)算小于參數(shù)的最小整數(shù)round()該方法用于計(jì)算小數(shù)進(jìn)行四舍五入后的結(jié)果max()該方法用于計(jì)算兩個(gè)數(shù)的較大值min()該方法用于計(jì)算兩個(gè)數(shù)的較小值random()該方法用于生成一個(gè)大于0.0小于1.0的隨機(jī)值sqrt()該方法用于計(jì)算開平方的結(jié)果pow()該方法用于計(jì)算指數(shù)函數(shù)的值試一試?yán)?.1字符串String類的使用演示。ublicstaticvoidmain(String[]args){//輸出常量ESystem.out.println(“Math.E=”+Math.E);//使用常量PI計(jì)算半徑為2.3的圓面積System.out.println(Math.PI*2.3*2.3);//求兩個(gè)數(shù)的最小值System.out.println(Math.min(4.0,5));//求兩個(gè)數(shù)的最大值System.out.println(Math.max(4.0,5));//求數(shù)據(jù)的平方根System.out.println(Math.sqrt(9));//三角函數(shù)System.out.println(Math.sin(90*Math.PI/180));//輸出0-100之間的一個(gè)隨機(jī)數(shù)System.out.println((int)(Math.random()*100));}練一練1、使用數(shù)學(xué)類,計(jì)算90度的余弦值。2、產(chǎn)生100個(gè)50以內(nèi)的隨機(jī)整數(shù)。4.2.2日歷類日歷類Calendar(java.util包)提供了一系列關(guān)于時(shí)間的比較和操作的方法,通過它可以更方便的進(jìn)行時(shí)間日期的計(jì)算。聲明功能描述Calendar.YEAR表示年份Calendar.MONTH表示月份Calendar.DATE表示日期Calendar.WEEK_OF_YEAR表示當(dāng)前年中的第幾個(gè)星期Calendar.WEEK_OF_MONTH表示當(dāng)前月中的第幾個(gè)星期Calendar.DAY_OF_YEAR表示一年中的第幾天Calendar.DAY_OF_MONTH表示一月中的第幾天Calendar.DAY_OF_WEEK表示一個(gè)星期中的第幾天Calendar.HOUR12小時(shí)制的小時(shí)Calendar.HOUR_OF_DAY24小時(shí)制的小時(shí)Calendar.MINUTE表示分鐘Calendar.SECOND表示秒Calendar.MILLISECOND表示毫秒staticCalendargetInstance()使用默認(rèn)時(shí)區(qū)和語言環(huán)境獲取一個(gè)日歷intget(intfield)獲取日期中某個(gè)字段的信息voidset(intfield,intvalue)設(shè)置日歷的某個(gè)字段信息voidadd(intfield,intamount)為某個(gè)字段添加/減少指定的值DategetTime()獲取此刻日期對(duì)象longgetTimeInMills()獲取此刻時(shí)間毫秒值試一試?yán)?.4日歷類常用功能演示。
publicstaticvoidmain(String[]args){ Calendarcalendar=Calendar.getInstance();//創(chuàng)建日歷對(duì)象表示當(dāng)前時(shí)間
System.out.println("當(dāng)前的日期時(shí)間是:"+calendar.getTime()); System.out.println("年份是:"+calendar.get(Calendar.YEAR)); System.out.println("月份是:"+calendar.get(Calendar.MONTH)); System.out.println("日期是:"+calendar.get(Calendar.DAY_OF_MONTH)); System.out.println("今天是星期:"+calendar.get(Calendar.DAY_OF_WEEK)); System.out.prinltn("時(shí):"+calendar.get(Calendar.HOUR_OF_DAY)); System.out.println("分:"+calendar.get(Calendar.MINUTE)); System.out.println("秒:"+calendar.get(Calendar.SECOND)); //日期運(yùn)算
calendar.add(Calendar.YEAR,1);//加1年
calendar.add(Calendar.MONTH,1);//加1個(gè)月 //日期比較
Calendarcalendar2=Calendar.getInstance(); System.out.println(pareTo(calendar2));System.out.println(calendar.before(calendar2));}【說明】4.2.2日歷類Calendar類的get方法,會(huì)根據(jù)程序員提供的參數(shù),返回不同的時(shí)間。這些參數(shù)以常數(shù)的形式,定義在Calendar類中,例如Calendar.YEAR表示年份、Calendar.MONTH表示月份。16Calendar.before(calendar2),calendar所表示的日期是否在calendar2之前,如果是,返回true。4Calendar.HOUR_OF_DAY獲取小時(shí)值,0~23表示。3Calendar.DAY_OF_WEEK返回日歷對(duì)象代表一周中的星期幾。返回1表示星期天,返回2表示星期一,以此類推。2Calendar.MONTH返回的月份,是從0開始,即1月份其返回值為0,2月份返回值為1,以此類推。5CpareTo(calendar2)如果兩個(gè)日期相同,返回0;如果calendar比calenda的日期要早,則返回小于0的數(shù),否則返回大于0的數(shù)。例4.5JDK中,還提供了本地化的日期時(shí)間類,供程序員進(jìn)行使用。publicstaticvoidmain(String[]args){LocalDateTimetoday=LocalDateTime.now();DateTimeFormatterfmt=DateTimeFormatter.ofPattern("yyyy-MM-dd");System.out.println(today.format(fmt));System.out.println("年份:"+today.getYear());System.out.println("月份:"+today.getMonth());System.out.println("日期:"+today.getDayOfMonth());System.out.println("調(diào)整后的月份:"+today.withMonth(2).getMonth());LocalDateTimestart=LocalDateTime.of(2022,1,1,0,0);LocalDateTimeend=LocalDateTime.of(2022,2,1,0,0);Durationd=Duration.between(start,end);System.out.println(d.toDays());Periodp=LocalDate.of(2022,1,1).until(LocalDate.of(2022,2,1));System.out.println(p.getMonths());}4.2.2日歷類練一練編寫程序,計(jì)算10天后的日期和時(shí)間。4.2.3格式化工具在應(yīng)用程序的設(shè)計(jì)中,經(jīng)常需要將系統(tǒng)默認(rèn)的時(shí)間格式轉(zhuǎn)化成自定義的格式,或者將自定義格式轉(zhuǎn)化成系統(tǒng)格式。SimpleDateFormat類(java.text包)是Java中一個(gè)常用的日期格式類,該類用來對(duì)日期字符串進(jìn)行解析和格式化輸出。代碼含義yyyy
4位年份,2021MMHH2位月份,01小時(shí)數(shù)(24小時(shí)制,18點(diǎn))mm2位分鐘數(shù)ss2位秒數(shù)SSS3位毫秒數(shù)ddhh2位日期,05小時(shí)數(shù)(12小時(shí)制,下午6點(diǎn))試一試publicstaticvoidmain(String[]args)throwsException{//構(gòu)造方法,括號(hào)內(nèi)自定義的時(shí)間格式
SimpleDateFormatsdf=newSimpleDateFormat("yyyy-MM-ddHH:mm:ss:SSS"); Calendarcalendar=Calendar.getInstance();//獲取當(dāng)前時(shí)間 //日期時(shí)間轉(zhuǎn)成特定格式的字符串
StringdateString=sdf.format(calendar.getTime()); System.out.println(dateString); //將字符串轉(zhuǎn)換成日期對(duì)象
java.util.Datedatetime=sdf.parse("1990-01-2323:45:06:123"); System.out.println(datetime);}4.2.4包裝類使用簡(jiǎn)單的基本數(shù)據(jù)類型,可以滿足大多數(shù)的應(yīng)用需求,但是它們不具備對(duì)象的性質(zhì),無法滿足一些特殊的需求,這就需要包裝類。Java語言對(duì)數(shù)據(jù)的處理,既提供了基本數(shù)據(jù)的簡(jiǎn)單類型,比如int,float,double,char等,又提供了相應(yīng)的包裝類,比如Integer,F(xiàn)loat,Double等?;緮?shù)據(jù)類型所對(duì)應(yīng)的包裝類如下表:4.2.4包裝類基本數(shù)據(jù)類型包裝類boolean
BooleancharintCharacter
IntegerlongLongfloatFloatdoubleDoublebyteshortByteShort試一試publicstaticvoidmain(String[]args)throwsException{Characterc=’q’;charch=c.charValue();//返回字符變量if(Character.isUpperCase(ch)) System.out.println(“Thecharacter“+ch+”isuppercase!”);elseSystem.out.println(“Thecharacter“+ch+”islowercase!”);Integern=10;inti=Value();//獲取int數(shù)值,將Integer對(duì)象轉(zhuǎn)換成int類型System.out.println(i);Integera=Integer.valueOf(53);//將一個(gè)整數(shù)轉(zhuǎn)換成Integer對(duì)象Integerb=Integer.valueOf(“123”);//將一個(gè)字符串轉(zhuǎn)換成Integer對(duì)象intt=Integer.parseInt(“100”);//獲取字符串所對(duì)應(yīng)的十進(jìn)制整數(shù)int類型System.out.println(t);}任務(wù)4.3處理異常【任務(wù)導(dǎo)入】任務(wù)4.3處理異常1.你在學(xué)習(xí)Java編程的過程中,是否出現(xiàn)過程序崩潰的情況?是什么原因?qū)е铝诉@些情況的出現(xiàn)?你是怎么解決的?
程序的運(yùn)行環(huán)境、程序的代碼都具有不確定性,測(cè)試能發(fā)現(xiàn)程序中的錯(cuò)誤,但無法保
證整個(gè)程序是完全正確的。一旦程序運(yùn)行出錯(cuò),我們應(yīng)該如何處理?【思考】2.Java的異常處理機(jī)制是什么?根據(jù)星期id,輸出對(duì)應(yīng)的中文信息。從控制臺(tái)輸入1~7之間的任一個(gè)數(shù)字,程序?qū)⒏鶕?jù)輸入的數(shù)字輸出對(duì)應(yīng)的中文星期信息。試一試
publicstaticvoidmain(String[]args){
System.out.print("請(qǐng)輸入星期id(1至7之間的數(shù)字):");
Scannerin=newScanner(System.in);
intweekId=in.nextInt();//
從鍵盤輸入整數(shù)
switch(weekId){
case1: System.out.println("星期一");break;
case2: System.out.println("星期二");break;
case3: System.out.println("星期三");break;
case4: System.out.println("星期四");break;
case5: System.out.println("星期五");break;
case6: System.out.println("星期六");break;
case7: System.out.println("星期天");break; default:
System.out.println("輸入的不是1至7之間的數(shù)字");}}例4.7異常的產(chǎn)生。試一試如果用戶沒有按系統(tǒng)要求進(jìn)行輸入,例如輸入字母“D”,則程序在運(yùn)行時(shí)將會(huì)發(fā)生異常。4.3.2捕捉異常編程時(shí),判斷哪些代碼有可能出現(xiàn)異常,將這些語句放入try語句塊中。緊接著使用catch語句塊,對(duì)可能產(chǎn)生的異常進(jìn)行捕捉。try-catch語句:
publicstaticvoidmain(String[]args){
System.out.print("請(qǐng)輸入星期id(1至7之間的數(shù)字):"); Scannerin=newScanner(System.in);
try{
intweekId=in.nextInt();//從鍵盤輸入整數(shù)
switch(weekId){ case1: System.out.println("星期一");break;
//…..代碼同案例4.7
case7: System.out.println("星期天");break; default:
System.out.println("輸入的不是1至7之間的數(shù)字");
}
}catch(Exceptione){ System.out.println("輸入的不是數(shù)字!"); e.printStackTrace();
} System.out.println("歡迎使用本軟件!");}試一試?yán)?.8try-catch語句的使用。根據(jù)星期id,輸出對(duì)應(yīng)的中文信息。從控制臺(tái)輸入1~7之間的任一個(gè)數(shù)字,程序?qū)⒏鶕?jù)輸入的數(shù)字輸出對(duì)應(yīng)的中文星期信息。練一練運(yùn)行下面的程序,觀察并分析輸出結(jié)果。publicclassMakeException{ publicstaticvoidmain(String[]args){ Stringname=null; intage=18; try{ System.out.println("姓名長(zhǎng)度是"+name.length());
System.out.println(name+"的年齡是"+age); }catch(Exceptione){ System.out.println("程序運(yùn)行發(fā)生了異常,異常是"+e); } System.out.println("程序運(yùn)行結(jié)束"); } }4.3.2捕捉異常try-catch語句塊之后,還可以接finally語句塊。無論try語句塊中,是否發(fā)生異常、也無論異常是否有被catch語句塊捕獲,finally語句塊中的代碼總會(huì)被執(zhí)行。try-catch-finally語句試一試publicstaticvoidmain(String[]args){Stringname=null;intage=18;try{System.out.println("姓名長(zhǎng)度是"+name.length());System.out.println(name+"的年齡是"+age);`}catch(Exceptione){System.out.println("這是catch語句塊。程序運(yùn)行發(fā)生了異常,異常是"+e);}finally{System.out.println("這是finally語句塊");}System.out.println("程序運(yùn)行結(jié)束");}例4.10try-catch-finally語句的使用。4.3.2捕捉異常多重catch塊程序中可能會(huì)發(fā)生各種各樣的異常,使用多個(gè)catch語句塊,捕捉可能產(chǎn)生的不同異常。異常發(fā)生后,程序會(huì)根據(jù)從上到下的順序,檢查異常類型和catch語句塊中的異常類型是否匹配。如果匹配上,則執(zhí)行對(duì)應(yīng)的catch語句塊內(nèi)容,異常被捕獲。捕獲異常之后,其它的catch語句將被忽略。這里所說的類型匹配,是指代碼運(yùn)行時(shí)的異常類型,與catch語句塊中異常類型相同或是其子類。試一試?yán)?.11多個(gè)catch塊。
publicstaticvoidmain(String[]args){ Scannerin=newScanner(System.in); try{ System.out.print("請(qǐng)輸入總成績(jī):"); inttotal=in.nextInt();//從鍵盤輸入總學(xué)時(shí)
System.out.print("請(qǐng)輸入學(xué)科數(shù)量:"); intcourseCount=in.nextInt();//從鍵盤輸入課程數(shù)目
System.out.println("平均成績(jī)是:"+total/courseCount); }catch(InputMismatchExceptione1){ System.out.println("輸入的不是數(shù)字!"); }catch(ArithmeticExceptione2){ System.out.println("學(xué)科數(shù)量不能為0!"); }catch(Exceptione){ System.out.println("異常是:"+e.getMessage());}}三角形的三條邊通過鍵盤輸入,輸入的數(shù)值構(gòu)不成三角形的話,需要重新輸入。練一練拋出異常throw
1.拋出異常throw在編程的過程中,有的異常單靠當(dāng)前的程序是無法恢復(fù)或者處理的。例如用戶傳入的參數(shù)錯(cuò)誤、IO設(shè)備等硬件的異常。這種情況,我們可以通過trhow關(guān)鍵字,將異常繼續(xù)拋出,交由功能的調(diào)用者去處理異常。試一試
classStudent{ privateStringphone; publicvoidsetPhone(Stringphone){ if(phone.length()==11){ this.phone=phone; }else{//如果電話號(hào)碼長(zhǎng)度小于11,則拋出異常
throwne
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 小區(qū)消防安全評(píng)估指南
- 安全生產(chǎn)典范企業(yè)講解
- 2025-2026人教版小學(xué)二年級(jí)語文期末測(cè)試卷上
- 結(jié)構(gòu)專業(yè)考試題及答案
- 2025-2026人教版三年級(jí)語文上學(xué)期卷
- 腸道菌群與NAFLD肝硬化PHG:MDT調(diào)節(jié)策略
- 2025-2026一年級(jí)語文上學(xué)期期末測(cè)試卷
- 腸狹窄術(shù)后腹腔感染的處理策略
- 腸梗阻合并糖尿病患者的血糖管理策略
- 衛(wèi)生院執(zhí)業(yè)監(jiān)督管理制度
- 安全生產(chǎn)目標(biāo)及考核制度
- (2026版)患者十大安全目標(biāo)(2篇)
- 2026年北大拉丁語標(biāo)準(zhǔn)考試試題
- 臨床護(hù)理操作流程禮儀規(guī)范
- 2025年酒店總經(jīng)理年度工作總結(jié)暨戰(zhàn)略規(guī)劃
- 空氣栓塞課件教學(xué)
- 2025年國(guó)家市場(chǎng)監(jiān)管總局公開遴選公務(wù)員面試題及答案
- 肌骨康復(fù)腰椎課件
- 患者身份識(shí)別管理標(biāo)準(zhǔn)
- 2025年10月自考04184線性代數(shù)經(jīng)管類試題及答案含評(píng)分參考
- 2025年勞動(dòng)保障協(xié)理員三級(jí)技能試題及答案
評(píng)論
0/150
提交評(píng)論