《Java程序設(shè)計(jì)項(xiàng)目化教程》課件-第2章_第1頁(yè)
《Java程序設(shè)計(jì)項(xiàng)目化教程》課件-第2章_第2頁(yè)
《Java程序設(shè)計(jì)項(xiàng)目化教程》課件-第2章_第3頁(yè)
《Java程序設(shè)計(jì)項(xiàng)目化教程》課件-第2章_第4頁(yè)
《Java程序設(shè)計(jì)項(xiàng)目化教程》課件-第2章_第5頁(yè)
已閱讀5頁(yè),還剩96頁(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)介

第2章任務(wù)2——處理考試系統(tǒng)中的成績(jī)2.1任務(wù)描述2.2任務(wù)【2-1】成績(jī)的評(píng)價(jià)2.3任務(wù)【2-2】成績(jī)的排序

2.1任務(wù)描述

本章主要任務(wù)是對(duì)考試成績(jī)進(jìn)行相關(guān)數(shù)據(jù)處理,我們將其分解為兩個(gè)子任務(wù),分別是成績(jī)的評(píng)價(jià)和成績(jī)的排序。

2.2任務(wù)【2-1】成績(jī)的評(píng)價(jià)

成績(jī)的評(píng)價(jià)是對(duì)于給定的成績(jī),按照一定規(guī)則評(píng)價(jià)分?jǐn)?shù)的等級(jí)。規(guī)則:90分(含)以上為“優(yōu)秀”;80分(含)以上為“良好”;70分(含)以上為“中等”;60分(含)以上為“及格”;低于60分為“不及格”。2.2.1技術(shù)要點(diǎn)

完成成績(jī)?cè)u(píng)價(jià)這個(gè)任務(wù)所要掌握的技術(shù)要點(diǎn)包括Java最基本語(yǔ)言要素的應(yīng)用以及流程控制語(yǔ)句的使用。其中,流程控制語(yǔ)句是用來(lái)控制程序執(zhí)行的順序的,它使得程序不僅僅只按照語(yǔ)句的先后次序執(zhí)行。Java語(yǔ)言中的結(jié)構(gòu)化程序設(shè)計(jì)方法使用順序結(jié)構(gòu)、分支結(jié)構(gòu)和循環(huán)結(jié)構(gòu)來(lái)定義程序的流程。順序結(jié)構(gòu)是三種結(jié)構(gòu)中最簡(jiǎn)單的一種,其語(yǔ)句的執(zhí)行順序是按照語(yǔ)句的先后次序進(jìn)行的。成績(jī)的評(píng)價(jià)主要使用的是分支結(jié)構(gòu)。

1.標(biāo)識(shí)符、變量和常量

1)標(biāo)識(shí)符

標(biāo)識(shí)符是為了區(qū)別程序中各種變量、方法、類而起的名字,由字符串序列構(gòu)成。標(biāo)識(shí)符要能被編譯器所識(shí)別,其命名必須遵守一定的規(guī)則。Java語(yǔ)言標(biāo)識(shí)符的命名規(guī)則是:

(1)由字母、下劃線(_)或美元符號(hào)($)開(kāi)頭,并且由字母、0~9的數(shù)字、下劃線或美元符號(hào)組成,不能以數(shù)字開(kāi)頭。

(2)區(qū)分大小寫(xiě)字母,長(zhǎng)度沒(méi)有限制。標(biāo)識(shí)符不宜過(guò)短,過(guò)短的標(biāo)識(shí)符會(huì)導(dǎo)致程序的可讀性變差;但也不宜過(guò)長(zhǎng),否則將增加錄入工作量和出錯(cuò)的可能性。

(3)不能將關(guān)鍵字用做普通的標(biāo)識(shí)符使用。例如,stu_id,$name,_btn2為合法的標(biāo)識(shí)符;stu-id,name*,2btn,class為不合法的標(biāo)識(shí)符。

2)關(guān)鍵字

關(guān)鍵字又稱保留字,是Java語(yǔ)言保留用做專門(mén)用途的字符串。在大多數(shù)的編輯軟件中,關(guān)鍵字會(huì)以不同的方式醒目顯示。Java語(yǔ)言常用關(guān)鍵字如表2-1所示。表2-1Java語(yǔ)言常用關(guān)鍵字需要說(shuō)明的是,go和const是C語(yǔ)言中的關(guān)鍵字,雖然在Java中不被使用,但是仍然屬于Java關(guān)鍵字。

3)變量和常量

變量是指在程序運(yùn)行過(guò)程中可以改變的量;常量是指一經(jīng)建立,在程序運(yùn)行的整個(gè)過(guò)程中其值保持不變的量。

變量聲明的基本格式如下:

[訪問(wèn)控制符]數(shù)據(jù)類型變量名1[[=變量初值],變量名2[=變量初值],…]

例如:

inta=10;常量在程序中可以是具體的值,例如,123,12.3,'c'。也可以用符號(hào)表示使用的常量,稱為符號(hào)常量。符號(hào)常量聲明的基本格式如下:

final數(shù)據(jù)類型常量名=常量值

例如:

finaldoublePI=3.14159;

通常,符號(hào)常量名用大寫(xiě)字母表示。

2.?dāng)?shù)據(jù)類型

Java語(yǔ)言中的數(shù)據(jù)類型可以分為基本數(shù)據(jù)類型和復(fù)合數(shù)據(jù)類型,如圖2-1所示?;緮?shù)據(jù)類型又稱為簡(jiǎn)單數(shù)據(jù)類型或原始數(shù)據(jù)類型,是不可再分割的、可以直接使用的類型;復(fù)合數(shù)據(jù)類型又稱為引用數(shù)據(jù)類型,是指由若干相關(guān)的基本數(shù)據(jù)組合在一起形成的復(fù)雜的數(shù)據(jù)類型。在Java中,各種數(shù)據(jù)類型占用固定的不同長(zhǎng)度的字節(jié)數(shù),與程序所在的軟、硬件平臺(tái)無(wú)關(guān),這一點(diǎn)也確保了Java的平臺(tái)無(wú)關(guān)性。

本節(jié)重點(diǎn)介紹的是基本數(shù)據(jù)類型,復(fù)合數(shù)據(jù)類型將在后續(xù)章節(jié)中介紹。圖2-1Java的數(shù)據(jù)類型

1)整型

(1)整型變量。Java定義了四種整數(shù)類型:字節(jié)型(byte)、短整型(short)、整型(int)、長(zhǎng)整型(long)。整數(shù)類型的取值范圍和占用的字節(jié)數(shù)如表2-2所示。表2-2整數(shù)類型的取值范圍及占用的字節(jié)數(shù)

(2)整型常量。Java的整型常量有三種形式:十進(jìn)制、八進(jìn)制和十六進(jìn)制。

十進(jìn)制:以非0的數(shù)字開(kāi)頭,由0~9和正、負(fù)號(hào)組成。例如,12,-34。

八進(jìn)制:以數(shù)字0開(kāi)頭,由0~7和正、負(fù)號(hào)組成。例如,0567。

十六進(jìn)制:以0X或0x開(kāi)頭,由數(shù)字0~9、字母A~F及正、負(fù)號(hào)組成。例如,0x3A。

Java的整型常量默認(rèn)是int類型,若聲明為長(zhǎng)整型,則需在末尾加“l(fā)”或“L”。如:123l、456L……

2)實(shí)型(浮點(diǎn)類型)

(1)實(shí)型變量。Java中定義了兩種實(shí)型:?jiǎn)尉?float)和雙精度(double)。實(shí)數(shù)類型的取值范圍和占用的字節(jié)數(shù)如表2-3所示。表2-3實(shí)數(shù)類型的取值范圍和占用的字節(jié)數(shù)

(2)實(shí)型常量。實(shí)型常量有標(biāo)準(zhǔn)記數(shù)法和科學(xué)記數(shù)法兩種表示方法。標(biāo)準(zhǔn)記數(shù)法由數(shù)字和小數(shù)點(diǎn)組成,且必須有小數(shù)點(diǎn),例如,0.123,5.0等??茖W(xué)記數(shù)法是數(shù)字中帶e或E,其中,e或E之前必須有數(shù)字,且e或E后面的數(shù)字(表示以10為底的乘冪部分)必須為整數(shù)。例如,12.3e3。

Java的實(shí)型常量默認(rèn)為double類型。因此在聲明實(shí)型常量時(shí),須在數(shù)字末尾加上“f”或“F”,否則編譯會(huì)提示出錯(cuò)。

例如:

floatsum=12.3; //產(chǎn)生編譯錯(cuò)誤

doublesum=12.3; //正確

floatsum=12.3f; //正確

3)字符型

(1)字符型變量。Java中的字符型變量的類型說(shuō)明符為char,采用的是Unicode編碼。Unicode定義的國(guó)際化的字符集能表示迄今為止人類語(yǔ)言的所有字符集。它是幾十個(gè)字符集的統(tǒng)一,包括拉丁文、希臘語(yǔ)、阿拉伯語(yǔ)、古代斯拉夫語(yǔ)、希伯來(lái)語(yǔ)、日文片假名、匈牙利語(yǔ)等。

我們所熟知的標(biāo)準(zhǔn)字符集ASCII碼是7位的,表示的范圍是0~127,擴(kuò)展的8位表示的范圍是0~255。但是對(duì)于上述復(fù)雜的文字,255個(gè)字符顯然不夠用。

Unicode編碼在機(jī)器中占16位,范圍為0~65535。因此,Java中的字符占2個(gè)字節(jié),16位,取值范圍為?'\u0000'~'\uFFFF'?或0~65535。雖然英語(yǔ)、德語(yǔ)、西班牙語(yǔ)等語(yǔ)言完全可以由8位表示,但是作為全球語(yǔ)言統(tǒng)一編碼的Unicode通過(guò)犧牲字節(jié)空間,為Java程序在不同語(yǔ)言平臺(tái)間實(shí)現(xiàn)移植提供和奠定了基礎(chǔ)。字符型變量只能存放一個(gè)字符,不能存放多個(gè)字符。例如,以“charch='am';”來(lái)定義和賦值是錯(cuò)誤的。

(2)字符型常量。字符型常量是用單引號(hào)括起來(lái)的單個(gè)字符。例如,‘a(chǎn)’,‘A’,‘z’,‘$’,‘!’(注意:‘a(chǎn)’?和?‘A’?是兩個(gè)不同的字符常量)。

除了以上形式的字符常量外,Java語(yǔ)言還允許使用一種以“\”開(kāi)頭的特殊形式的字符序列,這種字符常量稱為轉(zhuǎn)義字符。其含義是表示一些不可顯示的或有特殊意義的字符。常見(jiàn)的轉(zhuǎn)義字符如表2-4所示。表2-4轉(zhuǎn)義字符表

4)布爾型

(1)布爾型變量。布爾型變量的類型說(shuō)明符為boolean,用來(lái)表示邏輯值,占用1個(gè)字節(jié)。

(2)布爾型常量。布爾常量只有兩個(gè)值:“true”和“false”,表示“真”和“假”,均為關(guān)鍵字。標(biāo)準(zhǔn)C語(yǔ)言沒(méi)有定義布爾型的數(shù)據(jù)類型,它使用0表示“假”,非0表示真。Java語(yǔ)言中,布爾型數(shù)據(jù)是獨(dú)立的數(shù)據(jù)類型,不支持用非0和0表示“真”和“假”兩種狀態(tài)。

5)基本數(shù)據(jù)類型的使用

下面通過(guò)例2-1說(shuō)明數(shù)據(jù)基本類型的使用。

例2-1Example1.java

publicclassExample1{

publicstaticvoidmain(String[]args){

intn=50;

floatf1=1.25f;

doubled1=3.14e2;

charch1=97;

charch2='a';

System.out.println("n="+n);

System.out.println(“n=”+n);

System.out.println(“f1=”+f1);

System.out.println(“d1=”+d1);

System.out.println(“ch1=”+ch1);

System.out.println(“ch2=”+ch2);

}

}

程序運(yùn)行結(jié)果為

n=50

f1=1.25

d1=314.0

ch1=a

cha2=a

3.類型轉(zhuǎn)換

Java是一種強(qiáng)類型語(yǔ)言,當(dāng)把一個(gè)表達(dá)式賦值給一個(gè)變量時(shí),或在一個(gè)方法中傳遞參數(shù)以及進(jìn)行整型、實(shí)型、字符型數(shù)據(jù)的混合運(yùn)算時(shí),都要求數(shù)據(jù)類型相互匹配。因此在實(shí)際操作中,需要將不同類型的數(shù)據(jù)按照一定規(guī)則先轉(zhuǎn)換為同一類型。類型轉(zhuǎn)換可分為自動(dòng)類型轉(zhuǎn)換和強(qiáng)制類型轉(zhuǎn)換兩種。

1)自動(dòng)類型轉(zhuǎn)換

自動(dòng)類型轉(zhuǎn)換是指數(shù)據(jù)在一定條件下自動(dòng)轉(zhuǎn)換成精度更高的數(shù)據(jù)類型。各類型從低級(jí)到高級(jí)的順序?yàn)椋篵yte,short,char→int→long→float→double。例如:

intx=10;

floaty=x;

若輸出y的值,則結(jié)果為10.0。

2)強(qiáng)制類型轉(zhuǎn)換

高級(jí)數(shù)據(jù)要轉(zhuǎn)換成低級(jí)數(shù)據(jù),也即容量大的數(shù)據(jù)向容量小的數(shù)據(jù)轉(zhuǎn)換,需要使用強(qiáng)制類型轉(zhuǎn)換。這種使用可能會(huì)導(dǎo)致溢出或精度的下降,應(yīng)慎用。強(qiáng)制類型轉(zhuǎn)換的格式為

(type)變量;

其中,type為要轉(zhuǎn)換成的變量類型。例如:

longx=10;

inty=x;//產(chǎn)生編譯錯(cuò)誤

應(yīng)寫(xiě)為:

inty=(int)x;

4.運(yùn)算符和表達(dá)式

Java中的運(yùn)算符按其功能可以分為六類:算術(shù)操作運(yùn)算符、位操作運(yùn)算符、關(guān)系操作運(yùn)算符、邏輯操作運(yùn)算符、賦值操作運(yùn)算符和條件操作運(yùn)算符。表達(dá)式是常量、變量、方法調(diào)用以及一個(gè)或多個(gè)運(yùn)算符按照一定的規(guī)則的組合,它用于計(jì)算或?qū)ψ兞窟M(jìn)行賦值。

1)算術(shù)運(yùn)算符及表達(dá)式

算術(shù)運(yùn)算符主要用于數(shù)學(xué)表達(dá)式中,對(duì)數(shù)值型數(shù)據(jù)進(jìn)行運(yùn)算。算術(shù)表達(dá)式就是用算術(shù)運(yùn)算符將變量、常量、方法調(diào)用等連接起來(lái)的式子,其運(yùn)算結(jié)果為數(shù)值常量。算術(shù)運(yùn)算符主要包括:+?(加法)、-(減法)、*?(乘法)、/?(除法)、%(模運(yùn)算)、++?(遞增)和--(遞減)。

2)關(guān)系運(yùn)算符及表達(dá)式

關(guān)系運(yùn)算用來(lái)對(duì)兩個(gè)操作數(shù)進(jìn)行比較運(yùn)算。關(guān)系表達(dá)式就是用關(guān)系運(yùn)算符將兩個(gè)表達(dá)式連接起來(lái)的式子,其運(yùn)算結(jié)果為布爾邏輯值。運(yùn)算過(guò)程為,如果關(guān)系表達(dá)式成立,則結(jié)果為真(true),否則為假(false)。Java語(yǔ)言中的關(guān)系運(yùn)算符如表2-5所示。表2-5關(guān)系運(yùn)算符

3)邏輯運(yùn)算符及表達(dá)式

邏輯運(yùn)算符的操作數(shù)是邏輯型數(shù)據(jù),關(guān)系表達(dá)式的運(yùn)算結(jié)果為邏輯型數(shù)據(jù),因此邏輯表達(dá)式就是用邏輯運(yùn)算符將關(guān)系表達(dá)式連接起來(lái)的式子,其運(yùn)算結(jié)果為布爾類型。Java語(yǔ)言的邏輯運(yùn)算符如表2-6所示。邏輯運(yùn)算的規(guī)則如表2-7所示。表2-6邏輯運(yùn)算符表2-7邏輯運(yùn)算規(guī)則運(yùn)算符“&”與“&&”的不同之處是Java計(jì)算整個(gè)表達(dá)式時(shí)所進(jìn)行的處理不同。如果使用“&&”,當(dāng)“&&”左邊表達(dá)式的值為false時(shí),由于整個(gè)表達(dá)式的值肯定為false,則不必計(jì)算右邊表達(dá)式的值;如果使用“&”,則不管何種情況,“&”兩邊表達(dá)式的值都要計(jì)算出來(lái)。同理,運(yùn)算符“||”左邊表達(dá)式的值是true時(shí),不必計(jì)算右邊表達(dá)式的值即可得到整個(gè)表達(dá)式的值,如果使用“|”,則在任何情況下都必須計(jì)算運(yùn)算符兩邊表達(dá)式的值。

關(guān)系運(yùn)算符和邏輯運(yùn)算符經(jīng)常一起使用,用于流程控制語(yǔ)句的判斷條件中。

4)賦值運(yùn)算符及表達(dá)式

賦值運(yùn)算符“=”的功能就是把右邊表達(dá)式或操作數(shù)的值賦給左邊操作數(shù)。賦值表達(dá)式就是用賦值運(yùn)算符將變量、常量、表達(dá)式連接起來(lái)的式子。賦值運(yùn)算符左邊的操作數(shù)必須是一個(gè)變量,右邊的操作數(shù)可以是常量、變量或表達(dá)式。

在賦值運(yùn)算符“=”前面加上其他運(yùn)算符,可以組成復(fù)合運(yùn)算符。表2-8列出了Java語(yǔ)言常用的復(fù)合運(yùn)算符。表2-8賦值復(fù)合運(yùn)算符

5)條件運(yùn)算符及表達(dá)式

條件運(yùn)算符的運(yùn)算符號(hào)只有一個(gè)“?”,是一個(gè)三目運(yùn)算符,要求有三個(gè)操作數(shù)。它與C語(yǔ)言的使用規(guī)則完全相同。一般形式為

<表達(dá)式1>?<表達(dá)式2>:<表達(dá)式3>

其中,<表達(dá)式1>是一個(gè)關(guān)系表達(dá)式或邏輯表達(dá)式。

條件運(yùn)算符的執(zhí)行過(guò)程:先計(jì)算<表達(dá)式1>的值,若<表達(dá)式1>的值為真,則計(jì)算<表達(dá)式2>的值,且作為整個(gè)條件表達(dá)式的結(jié)果;若<表達(dá)式1>的值為假,則計(jì)算<表達(dá)式3>的值,且作為整個(gè)條件表達(dá)式的結(jié)果。例如:

intx=6,y=9,z;

intk=x<5?x:y;//x<5為假,所以k的值取y的值,結(jié)果為9

intz=x<0?x:-x;//z為x的絕對(duì)值

6)位運(yùn)算符

整型數(shù)據(jù)在內(nèi)存中是以二進(jìn)制的形式表示的,而位運(yùn)算符是用來(lái)對(duì)整型(long、int、char和byte)中的數(shù)以位(bit)為單位進(jìn)行運(yùn)算和操作的。表2-9列出了Java語(yǔ)言的全部位運(yùn)算符。表2-9位運(yùn)算符在位運(yùn)算過(guò)程中,如果碰到兩個(gè)操作數(shù)類型不同,即長(zhǎng)度不同,例如A&B,A是short型(16位),B是int型(32位),則系統(tǒng)首先將A擴(kuò)展到32位,高16位用0補(bǔ)齊,再按位進(jìn)行位運(yùn)算。表2-10是一個(gè)位運(yùn)算符的示例。表2-10位運(yùn)算符示例

7)運(yùn)算符的優(yōu)先級(jí)

當(dāng)表達(dá)式存在多個(gè)運(yùn)算符時(shí),運(yùn)算符的優(yōu)先級(jí)決定了表達(dá)式各部分的計(jì)算順序。優(yōu)先級(jí)順序指多種運(yùn)算操作在一起時(shí)的運(yùn)算順序。優(yōu)先級(jí)高的先運(yùn)算,兩個(gè)相同優(yōu)先級(jí)的運(yùn)算符運(yùn)算操作時(shí),采用左運(yùn)算符優(yōu)先規(guī)則,即從左到右執(zhí)行。Java語(yǔ)言的運(yùn)算符優(yōu)先級(jí)如表2-11所示。表2-11運(yùn)算符的優(yōu)先級(jí)順序

5.分支語(yǔ)句

分支結(jié)構(gòu)又稱為選擇結(jié)構(gòu),它根據(jù)給定條件進(jìn)行判斷、選擇,以執(zhí)行不同的流程分支。Java語(yǔ)言中提供了兩種分支語(yǔ)句,即if語(yǔ)句和switch語(yǔ)句。

1)?if語(yǔ)句

if語(yǔ)句是Java語(yǔ)言最基本的條件選擇語(yǔ)句,是一個(gè)“二選一”的控制結(jié)構(gòu),基本功能是根據(jù)判斷條件的值,從兩個(gè)程序塊中選擇其中一塊執(zhí)行。

(1)?if語(yǔ)句的一般形式:

if(<條件表達(dá)式>)

<語(yǔ)句組1>;

else

<語(yǔ)句組2>;]

說(shuō)明:

①if后面的條件可以是任意一個(gè)返回布爾值的表達(dá)式,其值為真或假。

②if語(yǔ)句的執(zhí)行過(guò)程為:若條件返回值為真,則執(zhí)行<語(yǔ)句組1>;否則執(zhí)行<語(yǔ)句組2>。③語(yǔ)句組可以是單條語(yǔ)句,也可以是復(fù)合語(yǔ)句,復(fù)合語(yǔ)句須用花括號(hào){}括起。

④[]所括的else子句部分是可選的,else不能單獨(dú)使用,必須和if配對(duì)使用。

圖2-2所示為if語(yǔ)句流程控制圖;圖2-3所示為if-else語(yǔ)句流程控制圖。圖2-2if語(yǔ)句流程控制圖2-3if-else語(yǔ)句流程控制

例2-2TestIF1.java

1publicclassTestIF1{

2publicstaticvoidmain(String[]args){

3 intscore=65;

4if(i>=60)

5 System.out.println("及格");

6 else

7 System.out.println("不及格");

8}

9}

(2)?if語(yǔ)句的嵌套形式。在if語(yǔ)句中又包含一個(gè)或多個(gè)if語(yǔ)句時(shí),這種形式稱為if語(yǔ)句的嵌套。形式如下:

if(<條件表達(dá)式1>)

if(<條件表達(dá)式2>)<語(yǔ)句組1>;

else<語(yǔ)句組2>;

else

if(<條件表達(dá)式3>)<語(yǔ)句組3>;

else<語(yǔ)句組4>;以下的if語(yǔ)句是一個(gè)多項(xiàng)分支選擇其一的結(jié)構(gòu),實(shí)際上if嵌套常用的是if-else-if階梯形式,它是一種特殊的嵌套形式。形式如下:

if(<條件1>)

<語(yǔ)句塊1>;

elseif(<條件2>)

<語(yǔ)句塊2>;

elseif(<條件3>)

else<語(yǔ)句n>;

其中,else總是和距它最近的if匹配。執(zhí)行過(guò)程為:條件表達(dá)式從上到下被求值。一旦找到為真的條件,就執(zhí)行與它關(guān)聯(lián)的語(yǔ)句,該階梯的其他部分就被忽略了。如果所有的條件都不為真,則執(zhí)行最后的else語(yǔ)句。最后的else語(yǔ)句經(jīng)常被作為默認(rèn)的條件,即如果所有其他條件測(cè)試失敗,就執(zhí)行最后的else語(yǔ)句。如果沒(méi)有最后的else語(yǔ)句,而且所有其他的條件都失敗,程序?qū)⒉蛔鋈魏蝿?dòng)作。

例2-3TestIF2.java

1publicclassTestIF2{

2publicstaticvoidmain(String[]args){

3 inti=88;

4 if(i>=90)

5 System.out.println("優(yōu)秀");

6 elseif(i>=80)

7 System.out.println("良好");

8 elseif(i>=70) 9 System.out.println("中等");

10 elseif(i>=60)

11 System.out.println("及格");

12 else

13 System.out.println("不及格");

14}

15}

2)?switch語(yǔ)句

switch語(yǔ)句又稱多路分支選擇語(yǔ)句,它提供了一種基于一個(gè)表達(dá)式的值來(lái)使程序執(zhí)行不同部分的簡(jiǎn)單方法。使用switch語(yǔ)句代替if語(yǔ)句處理多種分支情況時(shí),可以簡(jiǎn)化程序,使程序結(jié)構(gòu)清晰明了,增強(qiáng)了程序的可讀性。因此,它提供了一個(gè)比使用一系列if-else語(yǔ)句更好的選擇。

(1)?switch語(yǔ)句的一般形式。

switch(<表達(dá)式>)

{

case<值1>:<語(yǔ)句塊1>;break;

case<值2>:<語(yǔ)句塊2>;break;

case<值n>:<語(yǔ)句塊n>;break;

[default:<缺省語(yǔ)句塊>;]

}說(shuō)明:

①表達(dá)式必須為byte、short、int

或char類型,表達(dá)式的返回值和case語(yǔ)句中的常量值(1~n)的類型必須一致。

②?case語(yǔ)句中的常量值(1~n)不允許相同,類型必須一致。

③每個(gè)分支最后加上break語(yǔ)句,表示執(zhí)行完相應(yīng)的語(yǔ)句即跳出switch

語(yǔ)句。

④缺省語(yǔ)句可以省略。

⑤語(yǔ)句組可以是單條語(yǔ)句,也可以是復(fù)合語(yǔ)句,復(fù)合語(yǔ)句不必用{}括起來(lái)。執(zhí)行過(guò)程為:將表達(dá)式的值與每個(gè)case語(yǔ)句中的<值1>、<值2>……<值n>作比較。如果發(fā)現(xiàn)了一個(gè)與之相匹配的,則執(zhí)行該case語(yǔ)句后的代碼。如果沒(méi)有一個(gè)case常量與表達(dá)式的值相匹配,則執(zhí)行default語(yǔ)句。如果沒(méi)有相匹配的case

語(yǔ)句,也沒(méi)有相應(yīng)的default

語(yǔ)句,則什么也不執(zhí)行。在case語(yǔ)句序列中的break

語(yǔ)句將引起程序流從整個(gè)switch語(yǔ)句退出。當(dāng)遇到一個(gè)break語(yǔ)句時(shí),程序?qū)恼麄€(gè)switch語(yǔ)句結(jié)束后的第一行代碼處開(kāi)始繼續(xù)執(zhí)行。

(2)?switch語(yǔ)句的特殊形式。switch語(yǔ)句中,可以多個(gè)case共用一組執(zhí)行語(yǔ)句,沒(méi)有執(zhí)行語(yǔ)句的case語(yǔ)句后不加break語(yǔ)句。其形式為

switch(<表達(dá)式>)

{

case<值1>:

case<值2>:

case<值3>:<語(yǔ)句塊3>;break;

case<值n>:<語(yǔ)句塊n>;break;

[default:<缺省語(yǔ)句>;]

}執(zhí)行過(guò)程為:如果表達(dá)式的返回值與某個(gè)case中的常量值相匹配,則執(zhí)行距該case后最近的語(yǔ)句,如果沒(méi)有break,則不跳出switch語(yǔ)句,繼續(xù)執(zhí)行下一條語(yǔ)句,直到整個(gè)switch語(yǔ)句結(jié)束。2.2.2任務(wù)實(shí)施

例2-4TestSwitch.java

1publicclassTestSwitch{

2publicstaticvoidmain(String[]args){

3 intscore=95;

4 inti=score/10;

5 switch(i){

6 case10:

7 case9:

8 System.out.println("優(yōu)秀");

9 break; 10 case8:

11 System.out.println("良好");

12 break;

13 case7:

14 System.out.println("中等");

15 break;

16 case6:

17 System.out.println("及格");

18 break; 19 default:

20 System.out.println(“不及格”);

21 }

22}

23}

【程序解析】

在實(shí)際應(yīng)用中,數(shù)據(jù)通常是根據(jù)用戶的鍵盤(pán)輸入來(lái)獲得的。在本書(shū)第10.2.5節(jié)介紹了關(guān)于鍵盤(pán)輸入的相關(guān)知識(shí),有興趣的讀者可以查閱。

2.3任務(wù)【2-2】成績(jī)的排序

對(duì)于給定的成績(jī),采用冒泡排序算法,按照從高分到低分的順序輸出。

2.3.1技術(shù)要點(diǎn)

完成成績(jī)排序的工作任務(wù)所要掌握的技術(shù)要點(diǎn)就是循環(huán)語(yǔ)句和數(shù)組的使用。

1.循環(huán)語(yǔ)句

循環(huán)語(yǔ)句的作用是反復(fù)執(zhí)行一段代碼,直到滿足循環(huán)終止條件時(shí)為止。Java語(yǔ)言支持while、do-while和for三種循環(huán)語(yǔ)句。所有的循環(huán)結(jié)構(gòu)一般應(yīng)包括四個(gè)基本部分:●初始化部分:用來(lái)設(shè)置循環(huán)的一些初始條件,如計(jì)數(shù)器清零等。

●測(cè)試條件:通常是一個(gè)布爾表達(dá)式,每一次循環(huán)要對(duì)該表達(dá)式求值,以驗(yàn)證是否滿足循環(huán)終止條件。

●循環(huán)體:這是反復(fù)循環(huán)的一段代碼,可以是單一的一條語(yǔ)句,也可以是復(fù)合語(yǔ)句。

●迭代部分:這是在當(dāng)前循環(huán)結(jié)束、下一次循環(huán)開(kāi)始前執(zhí)行的語(yǔ)句,常常用來(lái)使計(jì)數(shù)器加1或減1。

1)?while語(yǔ)句

while語(yǔ)句是Java語(yǔ)言最基本的循環(huán)語(yǔ)句,如圖2-4所示。圖2-4while循環(huán)語(yǔ)句

while語(yǔ)句的一般形式如下:

while(<條件表達(dá)式>)

{

<循環(huán)體>;

}

條件表達(dá)式可以是任何布爾表達(dá)式,在循環(huán)體執(zhí)行前先判斷循環(huán)條件,如果為真,就執(zhí)行循環(huán)體語(yǔ)句;如果條件表達(dá)式的值為假,程序控制就轉(zhuǎn)移到while語(yǔ)句的后面一條語(yǔ)句執(zhí)行。例2-5TestWhile.java

1publicclassTestWhile{

2publicstaticvoidmain(String[]args){

3 inti=1,sum=0;

4 while(i<=100){

5 sum+=i;

6 i++;

7 }

8System.out.println(sum);

9}

10}

2)?do-while語(yǔ)句

do-while語(yǔ)句與while語(yǔ)句非常類似,不同的是while語(yǔ)句先判斷后執(zhí)行,而do-while語(yǔ)句是先執(zhí)行后判斷,循環(huán)體至少被執(zhí)行一次。所以稱while語(yǔ)句為“當(dāng)型”循環(huán),而稱do-while語(yǔ)句為“直到型”循環(huán)。do-while語(yǔ)句如圖2-5所示。

do-while語(yǔ)句的一般形式為

do{

<循環(huán)體語(yǔ)句>;

}while(<條件表達(dá)式>);圖2-5do-while循環(huán)語(yǔ)句例2-6TestDoWhile.java

1publicclassTestDoWhile{

2publicstaticvoidmain(String[]args){

3 inti=1,sum=0;

4do{

5 sum+=i;

6 i++;

7 }

8 while(i<=100);

9System.out.println(sum);

10}

11}

3)?for語(yǔ)句

for語(yǔ)句是Java語(yǔ)言中功能最強(qiáng)的循環(huán)語(yǔ)句之一。圖2-6for循環(huán)語(yǔ)句

for語(yǔ)句的一般形式為

for(<表達(dá)式1>;<表達(dá)式2>;<表達(dá)式3>)

{

<循環(huán)體語(yǔ)句>

}

其中:

①<表達(dá)式1>是設(shè)置控制循環(huán)變量的初值。

②<表達(dá)式2>作為條件判斷部分,可以是任何布爾表達(dá)式。

③<表達(dá)式3>是修改控制循環(huán)變量遞增或遞減,從而改變循環(huán)條件的語(yǔ)句。

for語(yǔ)句的執(zhí)行過(guò)程如圖2-6所示:

①執(zhí)行<表達(dá)式1>,完成必要的初始化工作。

②判斷<表達(dá)式2>的返回值。如果為真執(zhí)行循環(huán)體語(yǔ)句;如果為假就跳出for語(yǔ)句循環(huán)。

③執(zhí)行<表達(dá)式3>,改變循環(huán)條件,為下次循環(huán)做準(zhǔn)備。

④返回②。圖2-6for循環(huán)語(yǔ)句例2-7TestFor.java

1publicclassTestFor{

2publicstaticvoidmain(String[]args){

3 inti,sum=0;

4 for(i=1;i<=100;i++)

5sum+=i;

6System.out.println(sum);

7}

8}

2.跳轉(zhuǎn)語(yǔ)句

跳轉(zhuǎn)語(yǔ)句可以用來(lái)直接控制程序的執(zhí)行流程,Java語(yǔ)言提供的跳轉(zhuǎn)語(yǔ)句有:break和continue語(yǔ)句。這些語(yǔ)句經(jīng)常用于循環(huán)體內(nèi)部分支比較復(fù)雜時(shí),可以簡(jiǎn)化分支語(yǔ)句的條件,使得程序更易閱讀和理解。

1)?break語(yǔ)句

在Java語(yǔ)言中,break語(yǔ)句有三個(gè)作用:

(1)在switch語(yǔ)句中,break語(yǔ)句的作用是直接中斷當(dāng)前正在執(zhí)行的語(yǔ)句序列。

(2)在循環(huán)語(yǔ)句中,break語(yǔ)句可以強(qiáng)迫退出循環(huán),使本次循環(huán)終止。

(3)與標(biāo)號(hào)語(yǔ)句配合使用,從內(nèi)層循環(huán)或內(nèi)層程序塊中退出。例2-8TestBreak.java

1publicclassTestBreak{

2publicstaticvoidmain(String[]args){

3 inti,sum=0;

4 for(i=1;i<=100;i++){

5 if(i%15==0)break;

6 sum+=i;

7 }

8System.out.println(sum);

9}

10}程序運(yùn)行結(jié)果為

sum=105

例2-9TestBreakLabel.java

1publicclassTestBreakLabel{

2publicstaticvoidmain(String[]args){

3 booleant=true;

4 one:{

5 two:{

6 three:{

7 System.out.println("break之前的語(yǔ)句正常輸出"); 8 if(t)breaktwo;

9 System.out.println("two程序塊中break之后的語(yǔ)句不被執(zhí)行");

10 }

11 System.out.println("two程序塊中break之后的語(yǔ)句不被執(zhí)行");

12 }

13 System.out.println("two程序塊外的語(yǔ)句正常被執(zhí)行");

14 } 15}

16}

程序運(yùn)行結(jié)果為

break之前的語(yǔ)句正常輸出

two程序塊外的語(yǔ)句正常被執(zhí)行

2)?continue語(yǔ)句

continue語(yǔ)句主要有兩種作用,一是在循環(huán)結(jié)構(gòu)中,用來(lái)結(jié)束本次循環(huán);二是與標(biāo)號(hào)語(yǔ)句配合使用,實(shí)現(xiàn)從內(nèi)循環(huán)退到外循環(huán)。無(wú)標(biāo)號(hào)的continue語(yǔ)句結(jié)束本次循環(huán),有標(biāo)號(hào)的continue語(yǔ)句可以選擇哪一層的循環(huán)被繼續(xù)執(zhí)行。continue語(yǔ)句用于for、while、do-while等循環(huán)體中,常與if語(yǔ)句一起使用。

continue語(yǔ)句和break語(yǔ)句雖然都用于循環(huán)語(yǔ)句中,但存在著本質(zhì)區(qū)別:continue語(yǔ)句只用于結(jié)束本次循環(huán),再到循環(huán)起始去判斷條件;而break語(yǔ)句用于終止循環(huán),強(qiáng)迫循環(huán)結(jié)束,不再去判斷條件。例2-10TestContinue.java

1publicclassTestContinue{

2publicstaticvoidmain(String[]args){

3 inti,sum=0;

4 for(i=1;i<=100;i++){

5 if(i%15==0)continue;

6 sum+=i;

7 }

8System.out.println(sum);

9}

10}程序運(yùn)行結(jié)果為

sum=4735

利用continue語(yǔ)句可以實(shí)現(xiàn)乘法九九表的輸出。

例2-11TestContinueLabel.java

1publicclassTestContinueLabel{

2publicstaticvoidmain(String[]args){

3 outer:for(inti=1;i<10;i++){

4 for(intj=1;j<10;j++){

5 if(j>i){

6 System.out.println();

7 continueouter; 8 }

9System.out.print(i+“*”+j+“=”+(i*j)+“”);

10}

11}

12System.out.println();

13}

14}

程序運(yùn)行結(jié)果如圖2-7所示。圖2-7乘法九九表

3.?dāng)?shù)組

數(shù)組是Java語(yǔ)言中提供的一種簡(jiǎn)單的復(fù)合數(shù)據(jù)類型,是相同類型變量的集合。數(shù)組中的每個(gè)元素都具有相同的數(shù)據(jù)類型,可以用一個(gè)統(tǒng)一的數(shù)組名和下標(biāo)來(lái)唯一地確定數(shù)組中的元素,下標(biāo)從0開(kāi)始。數(shù)組有一維數(shù)組和多維數(shù)組之分。

1)數(shù)組的聲明

一維數(shù)組的聲明有下列兩種格式:

數(shù)組的類型[]數(shù)組名

數(shù)組的類型數(shù)組名[]二維數(shù)組的聲明有下列兩種格式:

數(shù)組的類型[][]數(shù)組名;

數(shù)組的類型數(shù)組名[][];

其中:

(1)數(shù)組的類型可以是任何Java語(yǔ)言的數(shù)據(jù)類型。

(2)數(shù)組名可以是任何Java語(yǔ)言合法的標(biāo)識(shí)符。

(3)數(shù)組名后面的[]可以寫(xiě)在前面也可以寫(xiě)在后面,前者符合Sun的命名規(guī)則,推薦使用。例如:

inta[];

DatedateArray[][];

注意:與C/C++不同,Java不允許在聲明數(shù)組中的方括號(hào)內(nèi)指定數(shù)組元素的個(gè)數(shù)。否則會(huì)導(dǎo)致語(yǔ)法錯(cuò)誤。

2)數(shù)組的創(chuàng)建

數(shù)組的聲明并不為數(shù)組分配內(nèi)存,因此不能訪問(wèn)數(shù)組元素。Java中需要通過(guò)new關(guān)鍵字為其分配內(nèi)存。

為一維數(shù)組分配內(nèi)存空間的格式如下:

數(shù)組名=new數(shù)組元素的類型[數(shù)組元素的個(gè)數(shù)];例如:

q=newq[10];

也可以寫(xiě)成:

inta=newa[10];

Java語(yǔ)言中,由于把二維數(shù)組看作是數(shù)組的數(shù)組,數(shù)組空間不是連續(xù)分配的,因此不要求二維數(shù)組每一維的大小相同。

二維數(shù)組的常用創(chuàng)建方法如下:

數(shù)組名[][]=new類型標(biāo)識(shí)符[第一維長(zhǎng)度][第一維長(zhǎng)度][…];例如:

intb[][]=newint[3][4];

3)數(shù)組的初始化

創(chuàng)建數(shù)組后,系統(tǒng)會(huì)給每個(gè)數(shù)組元素一個(gè)默認(rèn)的值,如表2-12所示。表2-12簡(jiǎn)單類型數(shù)組元素的初值在聲明數(shù)組的同時(shí)也可以給數(shù)組元素一個(gè)初始值。

例如:

inta[]={1,2,3,4};

StringstringArray[]={“How”,“are”“you”};

intb[][]={{1,2},{2,3},{3,4,5}};

4)數(shù)組的引用

一旦數(shù)組使用new分配了空間之后,數(shù)組長(zhǎng)度就固定了。這時(shí),我們可以通過(guò)下標(biāo)引用數(shù)組元素。一維數(shù)組元素的引用方式為

數(shù)組名[索引號(hào)]

二維數(shù)組元素的引用方式為

數(shù)組名[索引號(hào)1][索引號(hào)2]

其中,索引號(hào)為數(shù)組下標(biāo),它可以為整型常數(shù)或表達(dá)式,從0開(kāi)始。

例如:

a[0]=1;

b[1][2]=2;每個(gè)數(shù)組都有一個(gè)屬性length,以指明它的長(zhǎng)度,也即數(shù)組元素個(gè)數(shù)。例如,a.length指明數(shù)組a的長(zhǎng)度。

注意:與C、C++?中不同,Java對(duì)數(shù)組元素要進(jìn)行越界檢查以保證安全性。

例2-12ArrayTest1.java

1publicclassArrayTes1t{

2publicstaticvoidmain(St

溫馨提示

  • 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)論