《面向?qū)ο蟪绦蛟O(shè)計(jì)》課件-任務(wù)五 數(shù)據(jù)與異常處理_第1頁(yè)
《面向?qū)ο蟪绦蛟O(shè)計(jì)》課件-任務(wù)五 數(shù)據(jù)與異常處理_第2頁(yè)
《面向?qū)ο蟪绦蛟O(shè)計(jì)》課件-任務(wù)五 數(shù)據(jù)與異常處理_第3頁(yè)
《面向?qū)ο蟪绦蛟O(shè)計(jì)》課件-任務(wù)五 數(shù)據(jù)與異常處理_第4頁(yè)
《面向?qū)ο蟪绦蛟O(shè)計(jì)》課件-任務(wù)五 數(shù)據(jù)與異常處理_第5頁(yè)
已閱讀5頁(yè),還剩64頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

任務(wù)五

數(shù)據(jù)與異常處理“界立序成,越則危生”-數(shù)組一維數(shù)組章節(jié)概述/

Summary在上一章中,介紹了面向?qū)ο蟮母呒?jí)特性,如封裝、繼承、多態(tài)等。本章主要介紹數(shù)組和數(shù)據(jù)異常處理,描述對(duì)于數(shù)據(jù)的處理。目錄/Contents0102數(shù)組異常數(shù)組變量可以用來(lái)存儲(chǔ)和操作程序運(yùn)行過(guò)程中的數(shù)據(jù)。然而,基本類型的變量只能存儲(chǔ)單個(gè)數(shù)據(jù),假設(shè)現(xiàn)在需要存儲(chǔ)班級(jí)內(nèi)50名學(xué)生的成績(jī),如果使用基本類型的變量,就需要定義50個(gè)變量,這顯然是非常煩瑣的。在這種情況下,就可以使用一個(gè)表示成績(jī)的數(shù)組來(lái)同時(shí)存儲(chǔ)50名學(xué)生的成績(jī)。數(shù)組,是用來(lái)存儲(chǔ)相同數(shù)據(jù)類型的集合,數(shù)組中的每個(gè)數(shù)據(jù)稱為數(shù)組元素,數(shù)組元素的序號(hào)稱為下標(biāo)。學(xué)習(xí)目標(biāo)掌握數(shù)組的聲明和初始化,能夠使用靜態(tài)初始化和動(dòng)態(tài)初始化的方式創(chuàng)建數(shù)組掌握數(shù)組元素的訪問(wèn)和賦值,能夠通過(guò)索引對(duì)數(shù)組元素訪問(wèn)并賦值一維數(shù)組數(shù)組聲明的格式:① 方式一:② 方式二:1. 數(shù)組的聲明數(shù)據(jù)類型[]數(shù)組名;數(shù)據(jù)類型數(shù)組名[];示例代碼:int[]

intArray;String

stringArray[];一維數(shù)組數(shù)組聲明之后,需要為其分配內(nèi)存空間才能使用,可借助

new

關(guān)鍵字來(lái)創(chuàng)建數(shù)組,其格式如下:2. 數(shù)組的創(chuàng)建數(shù)組名=new數(shù)據(jù)類型[數(shù)組長(zhǎng)度];示例代碼:intArray=new

int[5];可以把聲明和創(chuàng)建合并為一步:示例代碼:intintArray=new

int[5];一維數(shù)組數(shù)組的初始化分為靜態(tài)初始化和動(dòng)態(tài)初始化兩種方式:(1)靜態(tài)初始化靜態(tài)初始化是指數(shù)組初始化時(shí),顯示指定每個(gè)數(shù)組元素的初始值。靜態(tài)初始化的語(yǔ)法格式:3. 數(shù)組的初始化數(shù)據(jù)類型[]數(shù)組名

=

{元素

1,元素

2,...,元素

n};示例代碼:int[]intArray={10,20,30,40,

50};需要注意的是,如果使用上述方式進(jìn)行靜態(tài)初始化,數(shù)組的聲明和初始化操作要同步,即初始化的代碼中,不能省略數(shù)組中元素的數(shù)據(jù)類型,否則會(huì)報(bào)錯(cuò)。一維數(shù)組3. 數(shù)組的初始化(2)動(dòng)態(tài)初始化動(dòng)態(tài)初始化是指數(shù)組初始化時(shí)只指定數(shù)組長(zhǎng)度,即指定數(shù)組中存放數(shù)組元素的個(gè)數(shù),由系統(tǒng)為數(shù)組元素分配初始值。根據(jù)元素類型的不同,默認(rèn)初始值也不同。數(shù)據(jù)類型默認(rèn)初始值byte、short、int、long0float、double0.0char一個(gè)空字符,即'\u0000'booleanfalse引用數(shù)據(jù)類型null,表示變量不引用任何對(duì)象一維數(shù)組3. 數(shù)組的初始化(2)動(dòng)態(tài)初始化先創(chuàng)建數(shù)組,再為數(shù)組逐個(gè)賦值,其語(yǔ)法格式如下:數(shù)據(jù)類型[]

數(shù)組名

=

new

數(shù)據(jù)類型[數(shù)組長(zhǎng)度];數(shù)組名[索引]=值;需要注意的是,數(shù)組長(zhǎng)度指定后不能再修改。示例代碼:int[]intArray=new

int[5];for(inti=0;i<intArray.length;i++){intArray[i]=

i;}一維數(shù)組3 數(shù)組的初始化需要注意的是,對(duì)一個(gè)數(shù)組進(jìn)行初始化時(shí),不要同時(shí)使用靜態(tài)初始化和動(dòng)態(tài)初始化,即不要初始化數(shù)組時(shí)既顯示指定元素的初始值,又指定數(shù)組的長(zhǎng)度,這樣代碼會(huì)報(bào)錯(cuò)。4. 數(shù)組元素的訪問(wèn)數(shù)組中的每個(gè)元素都有對(duì)應(yīng)的索引,可以通過(guò)數(shù)組的索引來(lái)訪問(wèn)數(shù)組元素。格式如下:數(shù)組名[索引]數(shù)組的索引值從0開(kāi)始,到數(shù)組長(zhǎng)度-1,也就是說(shuō),數(shù)組中第2個(gè)元素的索引值為1。一維數(shù)組示例代碼:int[]intArray={1,2,3,4,

5};int

firstElement

=

intArray[0];//

訪問(wèn)數(shù)組的第一個(gè)元素System.out.println("數(shù)組的第一個(gè)元素是:"

+

firstElement);腳下留心:數(shù)組索引越界和空指針異常數(shù)組在使用之前需要對(duì)數(shù)組進(jìn)行有效賦值,訪問(wèn)數(shù)組元素時(shí),指定的索引需要大于或等于0,并且小于數(shù)組的長(zhǎng)度,否則雖然程序在編譯時(shí)不會(huì)出現(xiàn)任何錯(cuò)誤,但在運(yùn)行時(shí)可能出現(xiàn)異常。這兩種情況造成的異常分別為數(shù)組索引越界和空指針異常。一維數(shù)組5. 數(shù)組的長(zhǎng)度可使用數(shù)組的

length

屬性獲取數(shù)組的長(zhǎng)度。格式如下:數(shù)組名.length一維數(shù)組示例代碼:int[]intArray={1,2,3,4,5};intlength=

intArray.length;System.out.println("數(shù)組的長(zhǎng)度是:"+

length);6. 數(shù)組的遍歷數(shù)組的遍歷指的是對(duì)數(shù)組中的每個(gè)元素進(jìn)行逐個(gè)訪問(wèn)和處理的過(guò)程。通過(guò)對(duì)數(shù)組的遍歷,可以逐個(gè)讀取數(shù)組中的元素,從而進(jìn)行一系列的操作或者獲取每個(gè)元素的值。一維數(shù)組6. 數(shù)組的遍歷在Java中,有多種方式可以遍歷數(shù)組,常見(jiàn)的遍歷方式有

for

循環(huán)、foreach

循環(huán)。其中,for循環(huán)是常見(jiàn)的遍歷數(shù)組的方式。通過(guò)設(shè)置一個(gè)變量為索引,從0開(kāi)始循環(huán)到數(shù)組的長(zhǎng)度-1,可以逐個(gè)訪問(wèn)數(shù)組中的元素,并對(duì)其進(jìn)行操作。一維數(shù)組6. 數(shù)組的遍歷(1)使用for循環(huán)遍歷數(shù)組(2)使用foreach循環(huán)遍歷數(shù)組一維數(shù)組int[]intArray={1,2,3,4,

5};for(inti=0;i<intArray.length;i++)

{System.out.println("數(shù)組的第

"

+

(i+

1)

+

"個(gè)元素是:"

+

intArray[i]);}int[]intArray={1,2,3,4,5};for(intelement:intArray)

{System.out.println("數(shù)組元素:"+

element);}任務(wù)五

數(shù)據(jù)與異常處理“界立序成,越則危生”-數(shù)組一維數(shù)組的應(yīng)用學(xué)習(xí)目標(biāo)掌握數(shù)組的常見(jiàn)操作,能夠?qū)?shù)組進(jìn)行遍歷、排序、最值的獲取7.數(shù)組的應(yīng)用一維數(shù)組下面通過(guò)一個(gè)案例演示學(xué)生的平均成績(jī),最高分和最低分publicclassExample5_1{publicstaticvoidmain(String[]args){int[]grades={85,90,78,92,88,76,

80};inttotal=

0;intmax=

grades[0];intmin=

grades[0];for(intgrade:grades){total+=

grade;if(grade>max)

{max=

grade;}if(grade<min)

{min=

grade;}}doubleaverage=(double)total/grades.length;System.out.println("學(xué)生的平均成績(jī)是:

"

+

average);System.out.println("學(xué)生的最高分是:"+max);System.out.println("學(xué)生的最低分是:

"

+

min);}}7.數(shù)組的應(yīng)用一維數(shù)組下面通過(guò)一個(gè)案例演示在數(shù)組種查找特定元素的位置publicclassExample5_2{publicstaticvoidmain(String[]args){int[]numbers={12,25,30,45,50,67};inttarget=

45;intindex=

-1;for(inti=0;i<numbers.length;i++){if(numbers[i]==target)

{index=

i;break;}}if(index!=-1)

{System.out.println("元素

"

+

target+

"

在數(shù)組中的索引是:

"

+index);}else

{System.out.println("元素

"

+target

+

"

不在數(shù)組中。");}}}7. 數(shù)組的應(yīng)用在實(shí)際開(kāi)發(fā)中,數(shù)組最常用的操作就是排序,數(shù)組的排序方法有很多,下面講解兩種比較常見(jiàn)的數(shù)組排序算法——選擇排序和冒泡排序。一維數(shù)組7. 數(shù)組的應(yīng)用:選擇排序選擇排序(selection

sort)是一種簡(jiǎn)單、直觀的排序算法。第一次從待排序的元素中選出最小(或最大)的一個(gè)元素,存放在序列的起始位置,才從剩余的未排序元素中尋找最?。ɑ蜃畲螅┰兀缓蠓诺揭雅判虻男蛄械哪┪?。以此類推,直到全部待排序的元素的個(gè)數(shù)為零。一維數(shù)組案例演示一維數(shù)組下面通過(guò)一個(gè)案例演示使用選擇排序?qū)?shù)組進(jìn)行排序。publicclassExample5_3{publicstaticvoidmain(String[]args){int[]arr={64,34,25,12,22,11,

90};selectionSort(arr);for(intnum:arr)

{System.out.print(num+"

");}}publicstaticvoidselectionSort(int[]arr){intn=

arr.length;for(inti=0;i<n-1;i++)

{intminIndex=

i;for(intj=i+1;j<n;j++){if(arr[j]<arr[minIndex])

{minIndex=

j;}}inttemp=arr[minIndex];arr[minIndex]=arr[i];arr[i]=

temp;}}}7. 數(shù)組的排序:冒泡排序冒泡排序(bubble

sort)是一種簡(jiǎn)單的排序算法,它的核心思想是通過(guò)多次遍歷待排序的數(shù)組,比較相鄰元素的大小,并在必要時(shí)交換它們的位置,使得較大的元素逐漸

“浮”

到數(shù)組的末尾,就像氣泡從水底冒到水面一樣,故而得名冒泡排序。冒泡排序過(guò)程如下:比較相鄰元素:從數(shù)組的第一個(gè)元素開(kāi)始,依次比較相鄰的兩個(gè)元素。交換元素位置:如果順序錯(cuò)誤(例如,對(duì)于升序排序,前一個(gè)元素比后一個(gè)元素大),則交換它們的位置。重復(fù)比較和交換:對(duì)數(shù)組中的每一對(duì)相鄰元素重復(fù)上述步驟,直到整個(gè)數(shù)組遍歷完。多輪遍歷:重復(fù)上述步驟多輪,每一輪結(jié)束后,最大(或最?。┑脑貢?huì)被移動(dòng)到數(shù)組的正確位置。隨著輪數(shù)的增加,需要比較的元素?cái)?shù)量逐漸減少。一維數(shù)組案例演示一維數(shù)組下面通過(guò)一個(gè)案例演示使用冒泡排序?qū)?shù)組進(jìn)行排序。publicclassExample5_4{publicstaticvoidmain(String[]args){int[]arr={64,34,25,12,22,11,

90};bubbleSort(arr);for(intnum:arr)

{System.out.print(num+"

");}}publicstaticvoidbubbleSort(int[]arr){intn=

arr.length;for(inti=0;i<n-1;i++)

{for(intj=0;j<n-i-1;j++){if

(arr[

j]>arr[

j

+

1])

{inttemp=arr[j];arr[

j]

=

arr[

j

+

1];arr[j+1]=

temp;}}}}}任務(wù)五

數(shù)據(jù)與異常處理“界立序成,越則危生”-數(shù)組二維數(shù)組熟悉二維數(shù)組的使用,能夠使用靜態(tài)初始化和動(dòng)態(tài)初始化的方式創(chuàng)建二維數(shù)組和遍歷二維數(shù)組學(xué)習(xí)目標(biāo)二維數(shù)組前面講解的數(shù)組,存儲(chǔ)數(shù)據(jù)的結(jié)構(gòu)可以看作表格中的一行多列,索引為列號(hào),通過(guò)列號(hào)可以訪問(wèn)對(duì)應(yīng)單元格中的數(shù)據(jù),通常將這種只使用一個(gè)索引訪問(wèn)數(shù)組元素的數(shù)組稱為一維數(shù)組。如果需要存儲(chǔ)多行多列的數(shù)據(jù)時(shí),例如存儲(chǔ)五子棋的棋盤上的棋子信息時(shí),需要同時(shí)存儲(chǔ)棋子在棋盤中行和列的信息,這時(shí)就可以使用多維數(shù)組。二維數(shù)組多維數(shù)組可以簡(jiǎn)單地理解為在數(shù)組中嵌套數(shù)組,即數(shù)組的元素是一個(gè)數(shù)組。在程序中比較常見(jiàn)的多維數(shù)組就是二維數(shù)組,二維數(shù)組就是指維數(shù)為2的數(shù)組,即數(shù)組有兩個(gè)索引,其邏輯結(jié)構(gòu)按行列排列,兩個(gè)索引分別表示行和列,通過(guò)行和列可以準(zhǔn)確標(biāo)識(shí)一個(gè)元素。二維數(shù)組數(shù)組聲明的格式:① 方式一:② 方式二:1. 二維數(shù)組的聲明數(shù)據(jù)類型[][]數(shù)組名;數(shù)據(jù)類型數(shù)組名[][];示例代碼:int[][]

intArray;String

stringArray[][];二維數(shù)組2. 二維數(shù)組的創(chuàng)建二維數(shù)組的創(chuàng)建也是使用

new

關(guān)鍵字,如下所示:① 規(guī)則二維數(shù)組:每行的元素個(gè)數(shù)相同,,創(chuàng)建時(shí)需要指定行數(shù)和列數(shù)② 不規(guī)則二位數(shù)組:每行的元素個(gè)數(shù)可以不同,創(chuàng)建時(shí)只需指定行數(shù),每行的列數(shù)可以后續(xù)單獨(dú)指定數(shù)組名=new數(shù)據(jù)類型[行數(shù)][列數(shù)];數(shù)組名

=new數(shù)據(jù)類型[行數(shù)][];示例代碼:intArray=new

int[3][4];示例代碼:intArray

=

new

int[3][];//聲明并創(chuàng)建一個(gè)包含

3行的不規(guī)則二維整型數(shù)組intArray[0]=newint[2];intArray[1]=newint[3];intArray[2]=new

int[4];二維數(shù)組3. 二維數(shù)組的初始化(1)靜態(tài)初始化:在聲明數(shù)組的同時(shí)為數(shù)組元素賦值,不需要指定數(shù)組的行數(shù)和列數(shù),編譯器會(huì)自動(dòng)確定。數(shù)據(jù)類型[][]數(shù)組名

=

{{元素

11,

元素

12,

...},{元素

21,

元素

22,

...},...};示例代碼:int[][]static2DArray=

{{1,2,

3},{4,5,

6},{7,8,

9}};二維數(shù)組3. 二維數(shù)組的初始化(2)動(dòng)態(tài)初始化:先創(chuàng)建數(shù)組,然后再為數(shù)組元素賦值數(shù)據(jù)類型[][]

數(shù)組名

=

new

數(shù)據(jù)類型[行數(shù)][列數(shù)];數(shù)組名[行索引][列索引]=值;示例代碼:int[][]dynamic2DArray=new

int[2][3];for(inti=0;i<dynamic2DArray.length;i++)

{for(intj=0;j<dynamic2DArray[i].length;j++){dynamic2DArray[i][j]=

i;}}二維數(shù)組4. 二維數(shù)組元素的訪問(wèn)二維數(shù)組中元素的訪問(wèn)也是通過(guò)行索引和列索引的方式,其下標(biāo)都從

0

開(kāi)始。訪問(wèn)二維數(shù)組arr的第1行第2列的元素值。數(shù)組名[行索引][列索引]int[][]int2DArray=

{{1,2,

3},{4,5,

6}};//訪問(wèn)第

1

行第

2列的元素intelement=

int2DArray[0][1];System.out.println("二維數(shù)組第

1行第

2列的元素是:"

+element);二維數(shù)組下面通過(guò)一個(gè)具體的案例來(lái)實(shí)現(xiàn)二維數(shù)組遍歷的理解和應(yīng)用。5.二維數(shù)組的遍歷packageExample05;publicclassExample5_5

{publicstaticstaticmain(String[]args){int[][]regularArray=

{{1,2,3,

4},{5,6,7,

8},{9,10,11,

12}};for(inti=0;i<regularArray.length;i++)

{for(intj=0;j<regularArray[i].length;j++){System.out.print(regularArray[i][j]+"

");}System.out.println();}}}任務(wù)五

數(shù)據(jù)與異常處理“界立序成,越則危生”-數(shù)組對(duì)象數(shù)組熟悉對(duì)象數(shù)組的使用,能夠使用逐個(gè)初始化和靜態(tài)初始化的方式創(chuàng)建對(duì)象數(shù)組和遍歷對(duì)象數(shù)組學(xué)習(xí)目標(biāo)對(duì)象數(shù)組對(duì)象數(shù)組是一種用于存儲(chǔ)對(duì)象引用的數(shù)組。也就是說(shuō),數(shù)組中的每個(gè)元素都是一個(gè)對(duì)象的引用,而不是對(duì)象本身。對(duì)象數(shù)組classStudent{String

name;int

age;publicStudent(Stringname,intage){=

name;this.age=

age;}}對(duì)象數(shù)組聲明對(duì)象數(shù)組的語(yǔ)法和聲明基本數(shù)據(jù)類型數(shù)組類似,只是數(shù)據(jù)類型是具體的類名。數(shù)組聲明的格式:1. 對(duì)象數(shù)組的聲明類名[]數(shù)組名;示例代碼:Student[]studentArray;對(duì)象數(shù)組聲明對(duì)象數(shù)組后,需要使用

new

關(guān)鍵字為數(shù)組分配內(nèi)存空間。數(shù)組創(chuàng)建的格式:2. 對(duì)象數(shù)組的創(chuàng)建數(shù)組名

=

new

類名[數(shù)組長(zhǎng)度];示例代碼:studentArray=new

Student[3];對(duì)象數(shù)組(1)逐個(gè)初始化3. 對(duì)象數(shù)組的初始化示例代碼://

聲明并創(chuàng)建一個(gè)長(zhǎng)度為3

的Student

類型的對(duì)象數(shù)組Student[]studentArray=new

Student[3];//逐個(gè)初始化數(shù)組元素studentArray[0]=newStudent("Alice",20);studentArray[1]=newStudent("Bob",21);studentArray[2]=newStudent("Charlie",

22);對(duì)象數(shù)組(2)靜態(tài)初始化3. 對(duì)象數(shù)組的初始化示例代碼://靜態(tài)初始化對(duì)象數(shù)組Student[]studentArray={newStudent("Alice",

20),newStudent("Bob",

21),newStudent("Charlie",

22)};對(duì)象數(shù)組4.對(duì)象數(shù)組元素的訪問(wèn)通過(guò)數(shù)組的索引可以訪問(wèn)對(duì)象數(shù)組中的元素,然后可以調(diào)用對(duì)象的方法或訪問(wèn)對(duì)象的屬性。classStudent{String

name;int

age;publicStudent(Stringname,intage){

=

name;this.age=

age;}publicvoiddisplayInfo(){System.out.println("Name:"+name+",Age:"+

age);}}publicclassExample5_7{publicstaticvoidmain(String[]args){Student[]studentArray=

{newStudent("Alice",

20),newStudent("Bob",

21),newStudent("Charlie",

22)};studentArray[0].displayInfo();}}對(duì)象數(shù)組可以使用

for

循環(huán)或

foreach

循環(huán)來(lái)遍歷對(duì)象數(shù)組5.對(duì)象數(shù)組的遍歷publicclassExample5_8{publicstaticvoidmain(Stringmain(String[]args){Student[]studentArray={newStudent("Alice",

20),newStudent("Bob",

21),newStudent("Charlie",

22)};for(inti=0;i<studentArray.length;i++){studentArray[i].displayInfo();}}}任務(wù)五

數(shù)據(jù)與異常處理“遇挫智應(yīng),破繭成蝶”-異常異常的分類、捕獲與處理學(xué)習(xí)目標(biāo)熟悉什么是異常,

能夠說(shuō)出E

r

r

o

r

類和Exception類區(qū)別什么是異常生活中,難免會(huì)遇到意外情況和突發(fā)狀況。例如,燒水時(shí)由于疏忽導(dǎo)致水燒開(kāi)后溢出熱水,可能會(huì)進(jìn)一步導(dǎo)致短路,甚至引發(fā)觸電等事故。這時(shí)應(yīng)立即采取措施,處理突發(fā)情況。什么是異常同樣,在Java編程中也可能會(huì)遇到各種異常情況。例如,程序運(yùn)行時(shí)磁盤空間不足、訪問(wèn)的文件不存在、進(jìn)行除法運(yùn)算時(shí)除數(shù)為0、數(shù)組下標(biāo)越界等。這些情況會(huì)導(dǎo)致程序出現(xiàn)錯(cuò)誤,進(jìn)而導(dǎo)致數(shù)據(jù)丟失或其他嚴(yán)重問(wèn)題。為此,Java提供了異常處理機(jī)制來(lái)幫助程序員檢查和處理可能出現(xiàn)的錯(cuò)誤,以保證程序的可讀性和可維護(hù)性。異常的分類Checked

Exceptions(受檢異常):這些異常在編譯時(shí)檢查,必須被捕獲或聲明拋出,也稱為編譯時(shí)異常。例如

IOException、SQLException等。Unchecked

Exceptions(非受檢異常):這些異常在編譯時(shí)不檢查,通常是程序邏輯錯(cuò)誤導(dǎo)致的,也成為運(yùn)行時(shí)異常。例如NullPointerException、ArrayIndexOutOfBoundsException

等。異常的分類Error錯(cuò)誤類,表示Java運(yùn)行時(shí)產(chǎn)生的系統(tǒng)內(nèi)部錯(cuò)誤或資源耗盡的錯(cuò)誤,這類錯(cuò)誤比較嚴(yán)重,僅靠修改程序代碼本身無(wú)法恢復(fù)正常執(zhí)行。Exception異常類,可以被程序處理和捕獲的異常,通常情況下,在開(kāi)發(fā)Java程序中進(jìn)行的異常處理,都是針對(duì)Exception類及其子類。異常的分類Java中的異常類都繼承自java.lang.Throwable類。Throwable類的繼承體系如下。異常的分類ArithmeticException:出現(xiàn)異常算術(shù)條件時(shí)產(chǎn)生;ArrayIndexOutOfBoundsException:數(shù)組下標(biāo)越界時(shí)產(chǎn)生;NullPointerException:應(yīng)用程序企圖使用需要的對(duì)象為空時(shí)產(chǎn)生;ArrayStoreException:程序試圖存儲(chǔ)數(shù)組中錯(cuò)誤的類型數(shù)據(jù)時(shí)產(chǎn)生;FileNotFoundException:試圖訪問(wèn)的文件不存在時(shí)產(chǎn)生;IOException:由于I/O故障而引起的,如讀文件故障;NumberFormatException:把字符串轉(zhuǎn)換為數(shù)值型數(shù)據(jù)失敗時(shí)產(chǎn)生;OutOfMemoryException:內(nèi)存不足時(shí)產(chǎn)生。學(xué)習(xí)目標(biāo)掌握try...catch語(yǔ)句和finally語(yǔ)句,能夠使用try...catch語(yǔ)句和finally語(yǔ)句處理異常程序運(yùn)行時(shí),JVM會(huì)創(chuàng)建一個(gè)異常對(duì)象來(lái)表示異常,并將相應(yīng)的異常信息封裝在異常對(duì)象中。捕獲到異常后,JVM會(huì)將異常對(duì)象傳遞給異常處理器,如果異常處理器沒(méi)有進(jìn)行處理,則會(huì)將該異常相關(guān)信息輸出,并終止程序的運(yùn)行。對(duì)此,可以對(duì)程序可能出現(xiàn)異常的代碼進(jìn)行監(jiān)控,出現(xiàn)異常時(shí),對(duì)其進(jìn)行捕獲并處理。異常的捕獲與處理Java提供了try…catch語(yǔ)句用于捕獲并處理異常,將可能出現(xiàn)異常的語(yǔ)句置于try語(yǔ)句體中,當(dāng)try語(yǔ)句體中的語(yǔ)句出現(xiàn)異常時(shí),即停止當(dāng)前程序的執(zhí)行,轉(zhuǎn)到catch語(yǔ)句體中執(zhí)行異常處理語(yǔ)句,即try發(fā)現(xiàn)異常而catch處理異常。但是try代碼塊中,發(fā)生異常的語(yǔ)句后面的代碼是不會(huì)被執(zhí)行的,然而在程序中有一些特定的語(yǔ)句無(wú)論異常是否發(fā)生都需要執(zhí)行。在try...catch語(yǔ)句后加一個(gè)finally代碼塊,finally代碼塊中存放的代碼一定會(huì)被執(zhí)行。其語(yǔ)法格式如下。try{//可能會(huì)出現(xiàn)異常的代碼}catch(異常類型

異常對(duì)象){//處理異常的代碼}...finally{//無(wú)論是否發(fā)生異常,都會(huì)執(zhí)行的代碼}異常的捕獲與處理try…catch…finally語(yǔ)句的異常處理流程。異常的捕獲與處理try

塊:只能出現(xiàn)一次,包含可能會(huì)拋出異常的代碼。如果其中的代碼拋出了異常,程序會(huì)立即跳轉(zhuǎn)到相應(yīng)的catch塊進(jìn)行處理。catch語(yǔ)句后的異常對(duì)象參數(shù)用于指明它能夠處理的異常類型,其類型必須是Exception類或其子類。catch代碼塊可以有多個(gè),用來(lái)匹配多個(gè)異常,但捕獲父類異常的catch代碼塊必須放在捕獲子類異常的catch代碼塊之后。finally

塊:出現(xiàn)零次或一次,無(wú)論try塊中的代碼是否拋出異常,也無(wú)論catch塊是否成功捕獲并處理了異常,finally塊中的代碼都會(huì)執(zhí)行。異常的捕獲與處理案例演示異常的捕獲與處理除法異常的捕獲importjava.util.Scanner;publicclassExample5_9

{publicstaticvoidmain(String[]args){intx,y,

z;try

{Scannersc=newScanner(System.in);System.out.println("請(qǐng)輸入被除數(shù):");x=

sc.nextInt();System.out.println("請(qǐng)輸入除數(shù):");y=

sc.nextInt();z=x/y;System.out.println(z);}catch(ArithmeticExceptione){System.out.println("除數(shù)不能為0!");}catch(Exceptione)

{System.out.println("輸入的數(shù)據(jù)不是整數(shù)!");}finally

{System.out.println("結(jié)束!");}}}任務(wù)五

數(shù)據(jù)與異常處理“遇挫智應(yīng),破繭成蝶”-異常異常的拋出和聲明學(xué)習(xí)目標(biāo)掌握異常的拋出和聲明,能夠在程序中使用throw語(yǔ)句和throws語(yǔ)句分拋出異常和聲明異常異常的拋出和聲明當(dāng)一個(gè)方法產(chǎn)生編譯時(shí)異常,而它本身不對(duì)這類異常進(jìn)行處理時(shí),可能導(dǎo)致程序崩潰。為此,Java提供了throw語(yǔ)句和throws語(yǔ)句分別用于拋出異常和聲明異常,將方法可能出現(xiàn)的問(wèn)

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 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ì)用戶上傳內(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ì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論