




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
§2-1學(xué)生基本信息處理Java面向?qū)ο蟪绦蛟O(shè)計(jì)教學(xué)目標(biāo)任務(wù)分析
在“學(xué)生信息管理系統(tǒng)”中,每個(gè)學(xué)生的基本信息包括:學(xué)號(hào)、姓名、性別、年齡等,在程序中對(duì)學(xué)生信息進(jìn)行合理地描述、處理及數(shù)據(jù)的輸入、輸出是完成系統(tǒng)設(shè)計(jì)的第一步。完成此項(xiàng)任務(wù),需要用到數(shù)據(jù)類型、標(biāo)識(shí)符、常量、變量、變量的聲明及數(shù)據(jù)基本運(yùn)算等。1Java基本數(shù)據(jù)類型Java關(guān)鍵字與標(biāo)識(shí)符2教學(xué)內(nèi)容3Java中的運(yùn)算符與表達(dá)式Java常量與變量45數(shù)據(jù)基本輸入輸出
一、Java關(guān)鍵字與標(biāo)識(shí)符關(guān)鍵字(Keyword)是由系統(tǒng)定義的、具有專門意義和用途的專用詞匯或符號(hào),也稱為保留字。在Java語言中共有數(shù)據(jù)類型、程序流程控制等近50個(gè)關(guān)鍵字,關(guān)鍵字均用小寫字母表示。1.關(guān)鍵字一、Java關(guān)鍵字與標(biāo)識(shí)符標(biāo)識(shí)符(Identifier)是程序中所使用的各種名字。在Java中,標(biāo)識(shí)符可以包含字母、數(shù)字、下劃線(_)和美元符號(hào)($),其中的字母不僅限于英文字母,也可以是漢字、希臘文、日文和韓文等。Java語言的標(biāo)識(shí)符區(qū)分大小寫字母,不能以數(shù)字開頭,沒有最大長(zhǎng)度限制。Java語言的關(guān)鍵字不能用來作為標(biāo)識(shí)符。例如,identifier,userName,User_Name,_sys_val,$change都是合法的標(biāo)識(shí)符,而2mail,room#,class則為非法的標(biāo)識(shí)符。2.標(biāo)識(shí)符二、Java基本數(shù)據(jù)類型數(shù)據(jù)是程序的重要組成部分,也是程序處理的對(duì)象。Java語言提供的數(shù)據(jù)類型可分為基本數(shù)據(jù)類型、復(fù)合數(shù)據(jù)類型兩大類。本節(jié)主要介紹基本數(shù)據(jù)類型。每種類型的數(shù)據(jù)都有各自的表示方法,并有不同的數(shù)據(jù)表示范圍。三、Java常量與變量數(shù)據(jù)在程序中的表示形式主要有兩種形式:常量和變量1.常量常量是在程序執(zhí)行過程中其值保持不變的量。Java支持如下幾種類型的常量:整型常量、實(shí)型常量、布爾型常量、字符型常量。(1)整型常量整型常量就是整數(shù),包括byte、short、int、long四種。Java的整型常量可以采用十進(jìn)制、八進(jìn)制或十六進(jìn)制表示,其中byte、short和int的表示方法相同,而長(zhǎng)整型必須在數(shù)字的后面加字母L(或l),以表示該數(shù)是長(zhǎng)整型。整型常量可表示為:十進(jìn)制、八進(jìn)制和十六進(jìn)制三、Java常量與變量數(shù)據(jù)在程序中的表示形式主要有兩種形式:常量和變量1.常量十進(jìn)制表示:由一個(gè)或多個(gè)從0到9的數(shù)字和正負(fù)號(hào)組成,如347,987L,-56,0等。十六進(jìn)制表示:以0x或0X開頭,由一個(gè)或多個(gè)十六進(jìn)制數(shù)組成。十六進(jìn)制數(shù)字包括0~9及字母A到F(或a到f)。如:0xA873、0X983e5c、-0x98L等。八進(jìn)制表示:以數(shù)字0開頭的一個(gè)或多個(gè)八進(jìn)制數(shù)組成。八進(jìn)制數(shù)字包括0~7如:0246、0876L,-0123等。三、Java常量與變量數(shù)據(jù)在程序中的表示形式主要有兩種形式:常量和變量1.常量(2)實(shí)型常量Java的實(shí)數(shù)也稱為浮點(diǎn)數(shù),分為單精度浮點(diǎn)數(shù)(float)和雙精度浮點(diǎn)數(shù)(double)兩種類型,單精度實(shí)數(shù)要在數(shù)字末尾加f(或F),否則默認(rèn)為雙精度實(shí)數(shù)。實(shí)數(shù)只能采用十進(jìn)制表示,有小數(shù)和指數(shù)兩種形式。當(dāng)一個(gè)實(shí)數(shù)很大或很小時(shí),可以使用指數(shù)形式,其指數(shù)部分用字母E(或e)表示。要注意的是,e或E前面必須有數(shù)字,而且e或E的后面必須為整數(shù)。如:0.4e2、-1.3E2f等。(3)布爾常量Java中布爾型(boolean)常量只有兩個(gè)值:true或false,表示“真”或“假”兩種狀態(tài)。三、Java常量與變量數(shù)據(jù)在程序中的表示形式主要有兩種形式:常量和變量1.常量(4)字符常量Java語言使用16位的Unicode字符集。字符常量是由單引號(hào)括起的單個(gè)字符。如:'a','6','我','M','&'等。字符常量是無符號(hào)常量,在內(nèi)存中占2個(gè)字節(jié),每個(gè)字符常量表示Unicode字符集中的一個(gè)字符。Unicode字符集不僅包括標(biāo)準(zhǔn)的ASCII字符集,還包括許多其他系統(tǒng)的通用字符集,如拉丁文、法文、希臘語、漢語、日語、韓文等,使Java的語言處理能力大大增強(qiáng),為Java程序在基于不同語言的平臺(tái)間實(shí)現(xiàn)平滑移植奠定了基礎(chǔ)。在Java中還有一類以反斜杠(\)開始的特殊的字符,稱其為轉(zhuǎn)義符。如'\n'代表回車換行等,如表2-2。三、Java常量與變量數(shù)據(jù)在程序中的表示形式主要有兩種形式:常量和變量1.常量(5)符號(hào)常量Java語言使用final關(guān)鍵字來定義一個(gè)符號(hào)常量,其語法為:
final常量類型常量名稱=常量值;常量名稱一般使用大寫字母。如:
finalintN=20;N則稱為符號(hào)常量,代表20。三、Java常量與變量數(shù)據(jù)在程序中的表示形式主要有兩種形式:常量和變量2.變量變量是在程序執(zhí)行過程中其值可以變化的量,變量都在內(nèi)存中的一塊存儲(chǔ)空間,用于存儲(chǔ)該變量的值。Java是嚴(yán)格區(qū)分?jǐn)?shù)據(jù)類型的強(qiáng)類型語言,要求在程序中使用任何變量之前必須先聲明其類型。變量聲明的一般格式:
類型標(biāo)識(shí)符
變量名1,變量名2,......如:intx,y;//聲明兩個(gè)整型變量x、y變量初始化,在聲明變量的同時(shí)賦予一個(gè)特定的值,如:intx=10;
三、Java常量與變量變量的聲明、賦值和使用變量的使用說明規(guī)則示例變量的聲明創(chuàng)建變量數(shù)據(jù)類型變量名;intage;floatheight;StringuserName;變量的賦值往內(nèi)存空間中存儲(chǔ)數(shù)據(jù)變量名=值;intage;age=25;變量的初始化聲明同時(shí)賦值數(shù)據(jù)類型變量名=初始值;intage=25,s;floatheight=177.68f;變量的引用獲取內(nèi)存空間中存儲(chǔ)的數(shù)據(jù)通過變量名使用變量的值
System.out.println("年齡為:"+age);三、Java常量與變量【例2-1】基本變量使用。publicclassBasicTypeDemo{publicstaticvoidmain(Stringargs[]){bytea=120;shortb=255;intc=2200;longd=8000;floatf;doubleg=123456789.123456789;b=a;c=(int)d;//強(qiáng)制性類型轉(zhuǎn)換f=(float)g;//導(dǎo)致精度的損失
System.out.print("a="+a);System.out.println("b="+b);System.out.print("c="+c);System.out.println("d="+d);System.out.println("f="+f);System.out.println("g="+g);}}四、Java中的運(yùn)算符與表達(dá)式按照運(yùn)算符要求的操作數(shù)(運(yùn)算量)個(gè)數(shù)有三種類型運(yùn)算符:?jiǎn)文窟\(yùn)算符:只要求一個(gè)運(yùn)算量,如:++、--等雙目運(yùn)算符:要求兩個(gè)運(yùn)算量,如:+、-|*、/等三目運(yùn)算符:要求三個(gè)運(yùn)算量,Java中僅有一個(gè)三目運(yùn)算符:
?
:按照運(yùn)算符的功能來劃分有以下幾種類型運(yùn)算符:算術(shù)運(yùn)算符、賦值運(yùn)算符、關(guān)系運(yùn)算符、邏輯運(yùn)算符、條件運(yùn)算符等運(yùn)算符分類表達(dá)式:由操作數(shù)和運(yùn)算符組成的有意義的運(yùn)算式,稱為表達(dá)式,其運(yùn)算結(jié)果稱為表達(dá)式值
。四、Java中的運(yùn)算符與表達(dá)式1.算術(shù)運(yùn)算操作數(shù)或表達(dá)式操作數(shù)或表達(dá)式算術(shù)運(yùn)算符*+-/%加減乘除求余"成績(jī)?yōu)椋?+85.5+"分" //結(jié)果為"成績(jī)?yōu)椋?5.5分"
5/2 //結(jié)果為25.0/2 //結(jié)果為2.5
5%3 //結(jié)果為2由算術(shù)運(yùn)算符構(gòu)成的表達(dá)式,稱為算術(shù)表達(dá)式。四、Java中的運(yùn)算符與表達(dá)式2.自加自減運(yùn)算自增自減運(yùn)算符都屬于一元運(yùn)算符。自增運(yùn)算符:“++”是對(duì)變量的值加1,自減運(yùn)算符“--”是對(duì)變量的值減1。自增自減運(yùn)算符雙有前綴、后綴兩形式。前綴形式:++x或--x,運(yùn)算規(guī)則:“先增減,后使用”后綴形式:x++或x--,運(yùn)算規(guī)則:“先使用,后增減”y=x++;y=++x;
y=x;x=x+1;
x=x+1;y=x;說明:1)自加自減運(yùn)算的操作數(shù)只能是變量,而不能是常量或表達(dá)式。例如3++或++(a+b)都是錯(cuò)誤的。2)自加自減運(yùn)算的結(jié)合方向是“從右到左”,其優(yōu)先級(jí)別高于基本算術(shù)運(yùn)算符。四、Java中的運(yùn)算符與表達(dá)式【例2-2】自加運(yùn)算符和自減運(yùn)算符的使用示例。publicclassAutoIncDemo{publicstaticvoidmain(String[]args){intx=5;System.out.println("x:"+x);System.out.println("++x:"+(++x));System.out.println("x++:"+(x++));System.out.println("x:"+x);System.out.println("--x:"+(--x));System.out.println("x--:"+(x--));System.out.println("x:"+x);}}四、Java中的運(yùn)算符與表達(dá)式3.關(guān)系運(yùn)算
關(guān)系運(yùn)算也稱為比較運(yùn)算,用于比較兩個(gè)表達(dá)式的大小。Java共提供六種關(guān)系運(yùn)算符,如下表所示。關(guān)系運(yùn)算符名稱實(shí)例(a=23結(jié)果優(yōu)先級(jí)別==等于a==bfalse同級(jí)低!=不等于a!=btrue>大于a>btrue同級(jí)高<小于a<bfalse>=大于等于a>=btrue<=小于等于a<=bfalse說明:由關(guān)系運(yùn)算符構(gòu)成的表達(dá)式稱為關(guān)系表達(dá)式,多用于控制結(jié)構(gòu)的條件判斷中。關(guān)系運(yùn)算的結(jié)果為邏輯值true(真)或false(假)。四、Java中的運(yùn)算符與表達(dá)式4.邏輯運(yùn)算
邏輯運(yùn)算是對(duì)true(真)或false(假)邏輯量進(jìn)行的運(yùn)算。Java提供的邏輯運(yùn)算符有!(非)、&或&&(與)、|或||(或)以及^(異或)。邏輯運(yùn)算符屬于二元運(yùn)算符,常用來表示一些復(fù)雜的關(guān)系運(yùn)算。注意&或&&(與)、|或||(或)的區(qū)別邏輯運(yùn)算符名稱實(shí)例說明!非!a取反。a為true,!a為false&或&&與a&b或a&&ba和b都為true,結(jié)果為true,否則皆為false|或||或a|b或a||ba和b都為false,結(jié)果為false,否則皆為true^異或a^ba和b同值,結(jié)果為false,不同為true四、Java中的運(yùn)算符與表達(dá)式5.賦值運(yùn)算
變量賦值通過賦值運(yùn)算符(=)完成,其語法格式為:
變量名=表達(dá)式;作用:計(jì)算賦值符右邊表達(dá)式的值,并把它賦值給左邊的變量。右邊表達(dá)式的值可以是任何類型的,但左邊必須是一個(gè)明確的、已命名的變量,而且該變量的類型必須與表達(dá)式值的類型一致。例如:
intm,k;
booleanf1;
m=17;k=5;
f1=m>k;四、Java中的運(yùn)算符與表達(dá)式5.賦值運(yùn)算
變量賦值通過賦值運(yùn)算符(=)完成,其語法格式為:
變量名=表達(dá)式;作用:計(jì)算賦值符右邊表達(dá)式的值,并把它賦值給左邊的變量。右邊表達(dá)式的值可以是任何類型的,但左邊必須是一個(gè)明確的、已命名的變量,而且該變量的類型必須與表達(dá)式值的類型一致。例如:intm,k;
booleanf1;
m=17;k=5;
f1=m>k;由賦值運(yùn)算符構(gòu)成的表達(dá)式稱為賦值表達(dá)式,賦值表達(dá)式的值等于賦值運(yùn)算符右側(cè)表達(dá)式的值。因此賦值表達(dá)式m=17的值為17,k=5的值為5。賦值運(yùn)算符具有右結(jié)合性,表達(dá)式可以連續(xù)賦值。下面表達(dá)式是合法的:m=n=k=5;四、Java中的運(yùn)算符與表達(dá)式5.賦值運(yùn)算
在賦值運(yùn)算符“=”之前加上其他運(yùn)算符,就構(gòu)成了復(fù)合賦值運(yùn)算符。
運(yùn)算符意義示例+=左邊的變量和右邊的值相加后賦給左邊的變量a+=2;相當(dāng)于a=a+2;-=左邊的變量和右邊的值相減后賦給左邊的變量a-=2;相當(dāng)于a=a-2;*=左邊的變量和右邊的值相乘后賦給左邊的變量a*=b;相當(dāng)于a=a*b;/=左邊的變量和右邊的值相除后賦給左邊的變量a/=b;相當(dāng)于a=a/b;%=左邊的變量和右邊的值相除取余后賦給左邊的變量a%=b;相當(dāng)于a=a%b;注意:類似“a*=b+5”的作用是使a乘以(b+5)的值后在賦值給a,即a=a*(b+5),而不能理解為a=a*b+5,四、Java中的運(yùn)算符與表達(dá)式6.條件運(yùn)算
條件運(yùn)算符(?:)是Java中唯一一個(gè)三元運(yùn)算符,由它構(gòu)成的表達(dá)式稱為條件表達(dá)式,其語法格式為:
表達(dá)式1?表達(dá)式2:表達(dá)式3
若“表達(dá)式1”的結(jié)果為true,就以“表達(dá)式2”的值作為該條件表達(dá)式的值;若“表達(dá)式1”的結(jié)果為false,則以“表達(dá)式3”的值作為它的值。例如:intm=i<10?i*100:i*10;當(dāng)i的值小于10時(shí),m的值為i*100,i的值大于或等于10時(shí),m的值為i*10。
四、Java中的運(yùn)算符與表達(dá)式7.運(yùn)算符的優(yōu)先級(jí)
在一個(gè)表達(dá)式中往往存在多個(gè)運(yùn)算符,此時(shí)要按照各個(gè)運(yùn)算符的優(yōu)先級(jí)及結(jié)合性進(jìn)行運(yùn)算。即首先運(yùn)算優(yōu)先級(jí)高的運(yùn)算符,再運(yùn)算優(yōu)先級(jí)較低的,相同優(yōu)先級(jí)的運(yùn)算符要按照它們的結(jié)合性來決定運(yùn)算次序。運(yùn)算符的結(jié)合性決定它們是從左到右計(jì)算還是從右到左計(jì)算
。
常用運(yùn)算符優(yōu)先級(jí)別及結(jié)合方向優(yōu)先級(jí)運(yùn)算符名稱結(jié)合性1()括號(hào)
2-(取負(fù)數(shù)),!,++,--一元運(yùn)算符右—左3*,/,%乘,除,取模左—右4+,-加,減左—右5>,<,>=,<=關(guān)系運(yùn)算符左—右6==,!=等于,不等于左—右7^異域左—右8&&邏輯與左—右9||邏輯或左—右10?:條件運(yùn)算符右—左11==*=/=%=+=-=(復(fù)合)賦值運(yùn)算符右—左四、Java中的運(yùn)算符與表達(dá)式8.數(shù)據(jù)類型轉(zhuǎn)換
(1)自動(dòng)類型轉(zhuǎn)換轉(zhuǎn)換規(guī)則為:(byte或
short)
op
int→
int(byte或
short或
int)
op
long→
long(byte或
short或
int或
long)
op
float→
float(byte或
short或
int或
long或
float)
op
double→
doublechar
op
int→
int其中,箭頭左邊表示參與運(yùn)算的數(shù)據(jù)類型,op為運(yùn)算符(如加、減、乘、除等);箭頭右邊表示轉(zhuǎn)換后的數(shù)據(jù)類型。自動(dòng)類型轉(zhuǎn)換規(guī)則可歸納為:向高看齊。
四、Java中的運(yùn)算符與表達(dá)式【例2-3】自動(dòng)類型轉(zhuǎn)換應(yīng)用。public
class
PromotionDemo{
public
static
void
main(
String
args[
]
){
byte
b=10;
char
c='a';
int
i=90;
long
l=555L;
float
f=3.5f;
double
d=1.234;
float
f1=f*b;//
float
*
byte
–>
float
int
i1=c+i;//
char
+
int
->
int
long
l1=l+i1;//
long
+
int
->ling
double
d1=f1/i1-d;//
float
/
int
->float,
float
-
double
->
double}}四、Java中的運(yùn)算符與表達(dá)式8.數(shù)據(jù)類型轉(zhuǎn)換
(2)強(qiáng)制類型轉(zhuǎn)換高精度數(shù)據(jù)轉(zhuǎn)換成低精度數(shù)據(jù)時(shí),需要用到強(qiáng)制類型轉(zhuǎn)換。即把一個(gè)容量較大的數(shù)據(jù)類型向一個(gè)容量較小的數(shù)據(jù)類型轉(zhuǎn)換時(shí),可能面臨信息丟失的危險(xiǎn),此時(shí)必須使用強(qiáng)制類型轉(zhuǎn)換。強(qiáng)制類型轉(zhuǎn)換的形式為:
(類型)表達(dá)式(或變量名)例如,voidcasts(){inti=200;longj=8L;longl=i;//自動(dòng)類型轉(zhuǎn)換i=(int)j;//強(qiáng)制類型轉(zhuǎn)換}五、數(shù)據(jù)基本輸入輸出1.標(biāo)準(zhǔn)輸入
標(biāo)準(zhǔn)輸入即將數(shù)據(jù)通過鍵盤輸入到程序中。在Java中,要完成數(shù)據(jù)的鍵盤輸入,一種比較簡(jiǎn)單的方法是借助系統(tǒng)提供的工具類Scanner。先構(gòu)造一個(gè)Scanner類的對(duì)象,然后通過該對(duì)象調(diào)用Scanner類的不同方法來完成各種類型數(shù)據(jù)的輸入。例如:
Scannerin=newScanner(System.in);然后可以調(diào)用Scanner類中的方法,實(shí)現(xiàn)輸入數(shù)據(jù)的操作。Scanner類的常用數(shù)據(jù)輸入的方法主要有:
next()//輸入一個(gè)單詞(中間無空格符)
nextLine()//輸入一行字符(中間可以包含空格符)
nextInt()//輸入一個(gè)整數(shù)
nextDouble()//輸入一個(gè)浮點(diǎn)數(shù)說明:Scanner類定義在Java.util包中,在編寫程序時(shí),要在程序的最開始處加入語句:
importjava.util.Scanner;//將Scanner類導(dǎo)入。五、數(shù)據(jù)基本輸入輸出【例2-4】詢問用戶的姓名和年齡,然后打印一條如下格式的信息:
Hello,XXX.Nextyear,your'llbe20yearsold.importjava.util.Scanner;publicclassInputTest{
publicstaticvoidmain(String[]args){
Scannerin=newScanner(System.in);System.out.println("Whatisyourname?");
Stringname=in.nextLine();//讀取用戶的名
System.out.println("Howoldareyou?");
intage=in.nextInt();
//讀取用戶的年齡
in.close();
//輸出信息
System.out.print("Hello,"+name+".“);
System.out.println("Nextyear,you'llbe"+(age+1)+”yearsold.”);
}}五、數(shù)據(jù)基本輸入輸出2.標(biāo)準(zhǔn)輸出
標(biāo)準(zhǔn)輸出也稱為基本輸出,即將程序處理后的數(shù)據(jù)在顯示器上展示給用戶。在Java中,若程序運(yùn)行時(shí)需要通過顯示器輸出數(shù)據(jù),則需要使用Java提供的輸出流功能。其常用的主要方法是通過System.out調(diào)用println()和print()方法。這兩種方法的區(qū)別在于:print()方法在輸出括號(hào)里指定的參數(shù)后就結(jié)束操作,而不再添加回車,光標(biāo)停留在輸出內(nèi)容最后一個(gè)字符的右邊,而println()則添加回車,光標(biāo)停在下一行開頭位置。五、數(shù)據(jù)基本輸入輸出【例2-5】常用格式化輸出應(yīng)用示例。
publicclassPrintfDemo{ publicstaticvoidmain(String[]args){
System.out.printf("我是%s,性別%c,今年%d歲%n","小新",'男',18);//%s格式化字符串,%c格式化字符//%d格式化整數(shù)(十進(jìn)制)%n換行與\n相同, System.out.printf("我的名字是:%s\n","小新"); System.out.printf("小新今年%d歲%n",18); System.out.printf("八進(jìn)制數(shù)字%o%n",63);
//%o格式化整數(shù)(八進(jìn)制) System.out.printf("十六進(jìn)制數(shù)字%x%n",255);
//%x格式化整數(shù)(十六進(jìn)制) System.out.printf("輸出字符%c%n",97); System.out.printf("輸出字符%c%n",'a'); System.out.printf("布爾值%b%n",true);
//%b格式化布爾值 System.out.printf("浮點(diǎn)型數(shù)據(jù)%f%n",1.555); //%f格式化浮點(diǎn)型 System.out.printf("保留兩位小數(shù)%.2f",1.2555);
//%.2f為保留兩位小數(shù)(會(huì)四舍五入)}}任務(wù)實(shí)施“學(xué)生基本信息處理”任務(wù)實(shí)施步驟。1)變量聲明:將學(xué)生的每一項(xiàng)信息聲明為一個(gè)變量,根據(jù)信息的實(shí)際內(nèi)容確定變量名及類型;2)鍵盤輸入信息(或給變量賦值);3)根據(jù)需要完成數(shù)據(jù)處理;4)輸出學(xué)生信息。完成“工單2-1”訓(xùn)練任務(wù)同步訓(xùn)練P55課后作業(yè):三、1,四、2課后作業(yè)§2-2學(xué)科成績(jī)處理Java面向?qū)ο蟪绦蛟O(shè)計(jì)教學(xué)目標(biāo)任務(wù)分析
在學(xué)生成績(jī)處理中經(jīng)常需要根考試分?jǐn)?shù)確定成績(jī)的等級(jí),即:優(yōu)、良、中、不及格,這就需要先對(duì)成績(jī)進(jìn)行邏輯判斷,然后再給出相應(yīng)等級(jí),實(shí)現(xiàn)這類任務(wù)就需要用到程序設(shè)計(jì)的選擇結(jié)構(gòu)(分支結(jié)構(gòu))。教學(xué)內(nèi)容1if選擇結(jié)構(gòu)的實(shí)現(xiàn)及應(yīng)用程序設(shè)計(jì)基本結(jié)構(gòu)23switch結(jié)構(gòu)的構(gòu)成及應(yīng)用一、程序設(shè)計(jì)基本結(jié)構(gòu)
Java程序設(shè)計(jì)同樣也使用三種基本結(jié)構(gòu):順序結(jié)構(gòu)、選擇結(jié)構(gòu)、循環(huán)結(jié)構(gòu),每個(gè)基本結(jié)構(gòu)都包含一個(gè)入口和一個(gè)出口。行流程如圖2-4所示。順序結(jié)構(gòu):順序結(jié)構(gòu)表示程序中的各操作語句是按照它們的書寫順序先后執(zhí)行的。選擇結(jié)構(gòu):選擇結(jié)構(gòu)也稱為分支結(jié)構(gòu),表示程序的處理步驟出現(xiàn)了分支,它需要根據(jù)某一特定的條件選擇其中的一個(gè)分支執(zhí)行。循環(huán)結(jié)構(gòu):循環(huán)結(jié)構(gòu)表示程序反復(fù)執(zhí)行某個(gè)或某些操作,直到某條件為假時(shí)才可終止循環(huán)。一、程序設(shè)計(jì)基本結(jié)構(gòu)
Java中的流程控制語句主要包括以下三類。選擇語句:if-else,switch循環(huán)語句:while,dowhile,for其他流程控制語句:break,continue,return二、if選擇結(jié)構(gòu)
語法格式:
if(條件表達(dá)式){
語句序列;
}執(zhí)行流程:當(dāng)條件表達(dá)式的值為true(真)時(shí)執(zhí)行語句序列,否則執(zhí)行if結(jié)構(gòu)后面的語句。例如: if(a>b){ b=a;
}1.if形式條件表達(dá)式語句序列二、if選擇結(jié)構(gòu)
語法格式:
if(條件表達(dá)式){
語句序列1;
}else{
語句序列2}執(zhí)行流程:當(dāng)條件表達(dá)式的值為true(真)時(shí)執(zhí)行語句序列1,否則執(zhí)行語句序列2。例如: if(a>b){ b=a;
}
else{b=0}2.ifelse形式條件表達(dá)式語句序列1語句序列2二、if選擇結(jié)構(gòu)
【例2-6】求三個(gè)數(shù)中的最大數(shù),鍵盤任意輸入三個(gè)整數(shù),輸出其中的較大者。importjava.util.Scanner;publicclassMaxNumberDemo{publicstaticvoidmain(Stringargs[]){
inta,b,c,max;
Scannerin=newScanner(System.in);
System.out.println("請(qǐng)輸入三個(gè)整數(shù):");
a=in.nextInt();
b=in.nextInt();
c=in.nextInt();
if(a>b){
max=a;
}
else{
max=b;
}
if(max<c){ max=c;
}
System.out.println("最大數(shù):"+max);
}}二、if選擇結(jié)構(gòu)
if語句的嵌套是指一個(gè)if語句的if子句或者else子句的執(zhí)行對(duì)象中又包含了if語句。if語句的嵌套格式多種多樣,沒有固定的格式要求,其中比較典型的一種嵌套結(jié)構(gòu)被稱為if-else-if階梯。其語法格式為:
if(條件表達(dá)式1)
語句序列1;
elseif(條件表達(dá)式2)
語句序列2;
elseif(條件表達(dá)式3)
語句序列3;
……
else
語句序列N;3.if語句的嵌套使用if語句的嵌套時(shí)需要注意:else與if的匹配。如:
if(i==10){
if(j<20)a=b;
if(k>100)c=d;
elsea=c;
}
elsea=d;二、if選擇結(jié)構(gòu)
【例2-7】通過使用if-else-if階梯來編寫程序,確定某個(gè)月分屬于哪個(gè)季節(jié),即:輸入月份,輸出其所在季節(jié)。importjava.util.Scanner;classIfElseDemo{
publicstaticvoidmain(Stringargs[]){
Scannerin=newScanner(System.in);
System.out.println("請(qǐng)輸月份:");
intmonth=in.nextInt();//輸入月份
Stringseason;
if(month==12||month==1||month==2)
season="冬季";
elseif(month==3||month==4||month==5)
season="春季";
elseif(month==6||month==7||month==8)
season="夏季";
elseif(month==9||month==10||month==11)
season="秋季";
else
season="月份輸入錯(cuò)誤!";
System.out.println(month+"月,屬于"+season+"。");
}} 三、switch選擇結(jié)構(gòu)
解決多分支結(jié)構(gòu)的問題時(shí),如果使用嵌套層數(shù)太多的ifelse語句,會(huì)使程序變得復(fù)雜和難于理解,而且容易產(chǎn)生錯(cuò)誤。為此,Java提供了一條專門用于多分支選擇的語句——switch語句,以便實(shí)現(xiàn)從多條分支中選擇一條進(jìn)行執(zhí)行。switch語句的執(zhí)行過程:1)首先計(jì)算表達(dá)式的值。2)將表達(dá)式的值依次與case后面的值進(jìn)行比較,一旦有匹配的值,則執(zhí)行該case子句中的語句,并將此case子句作為入口一直順序執(zhí)行下去,直到遇到break或switch結(jié)束。3)如果沒有一個(gè)case的常量與表達(dá)式的值相匹配,則執(zhí)行default子句,若沒有default子句,則不執(zhí)行任何語句。switch語法格式:switch(表達(dá)式){casevalue1:
語句序列1;
break;casevalue2:
語句序列2;
break;
……casevalueN:
語句序列N
break;
default:
語句序列N+1;}三、switch選擇結(jié)構(gòu)
【例2-7】通過使用if-else-if階梯來編寫程序,確定某個(gè)月分屬于哪個(gè)季節(jié),即:輸入月份,輸出其所在季節(jié)。importjava.util.Scanner;publicclassSwitchDemo{publicstaticvoidmain(String[]args){Scannerin=newScanner(System.in); System.out.println("請(qǐng)輸月份:"); intmonth=in.nextInt();//輸入月份 Stringseason; switch(month){
case12:
case1:
case2:
season="冬季";
break;
case3:
case4:
case5:
season="春季";
break;
case6:
case7: case8: season="夏季"; break;case9: case10: case11: season="秋季"; break;default: season="月份輸入有誤!"; } System.out.println(month+"月,屬于"+season+"。"); }
任務(wù)實(shí)施鍵盤輸入學(xué)生成績(jī),輸出對(duì)應(yīng)等級(jí):優(yōu)秀≥90、90<良好≥75,75>中≥60,不及格<60。本任務(wù)屬多分支情況,使用switch實(shí)現(xiàn)比較簡(jiǎn)潔,程序源代碼如下。完成“工單2-2”訓(xùn)練任務(wù)同步訓(xùn)練§2-3班級(jí)成績(jī)統(tǒng)計(jì)Java面向?qū)ο蟪绦蛟O(shè)計(jì)教學(xué)目標(biāo)任務(wù)分析
為了考查同學(xué)們對(duì)課程內(nèi)容的掌握情況,希望對(duì)班級(jí)成績(jī)按優(yōu)、良、中、不及格四個(gè)等級(jí)分別統(tǒng)計(jì)學(xué)生人數(shù)。若要完成此任務(wù),則需要對(duì)每位同學(xué)的成績(jī)進(jìn)行分析判斷并進(jìn)行統(tǒng)計(jì),程序中需要重復(fù)同樣的操作若干次,這類程序就應(yīng)該使用循環(huán)結(jié)構(gòu)去實(shí)現(xiàn)。教學(xué)內(nèi)容1循環(huán)結(jié)構(gòu)嵌套Java循環(huán)結(jié)構(gòu)的實(shí)現(xiàn)23其他流程控制語句循環(huán)結(jié)構(gòu)應(yīng)用4一、Java循環(huán)結(jié)構(gòu)的實(shí)現(xiàn)循環(huán)語句的作用是重復(fù)執(zhí)行一段程序代碼,直到循環(huán)條件不再成立為止。被重復(fù)執(zhí)行的語句稱為循環(huán)體。Java提供的循環(huán)語句有while語句,do-while語句和for語句三種。一、Java循環(huán)結(jié)構(gòu)的實(shí)現(xiàn)【例2-9】分別用while、dowhile、for三種循環(huán)語句計(jì)算1+2+3+……+100,比較三種循環(huán)語句的使用。classWhileDemo{publicstaticvoidmain(Stringargs[]){inti=1;//初始化循環(huán)變量iints=0;//初始化累加求和變量swhile(i<=100){s=s+i;//累加求和i++;//迭代,變更循環(huán)條件}System.out.println("1+2+3+……+100之和為:"+s);}}
classDoWhileDemo{
publicstaticvoidmain(Stringargs[]){
inti=1;//初始化循環(huán)變量i
ints=0;//初始化累加求和變量s
do{
s=s+i;//累加求和
i++;//迭代,變更循環(huán)條件
}while(i<=100);
System.out.println("1+2+3+……+100之和為:"+s);
}}classForDemo{
publicstaticvoidmain(Stringargs[]){
inti,s;//變量聲明
for(i=1,s=0;i<=100;i++){
s=s+i;//累加求和
}
System.out.println("1+2+3+……+100之和為:"+s);
}}一、Java循環(huán)結(jié)構(gòu)的實(shí)現(xiàn)【例2-10】假設(shè)一張足夠大的紙,厚為0.5毫米。問對(duì)折多少次以后,可以達(dá)到珠穆朗瑪峰的高度?(珠穆朗瑪峰2020年測(cè)試高度:8848.86米,此次測(cè)量采用北斗衛(wèi)星和人工測(cè)量方式,測(cè)量精度達(dá)到毫米級(jí)別)publicclassTimes{
publicstaticvoidmain(String[]args){ intn=0;
//聲明計(jì)數(shù)器變量 doubleh=0.5;//聲明循環(huán)控制變量 for(;
h<=8848.86*1000;
n++,h*=2){
; //循環(huán)體為空 } System.out.println("需要對(duì)折"+n+"次。");
}}
二、循環(huán)嵌套
在一個(gè)循環(huán)體語句中又包含另一個(gè)循環(huán)語句,稱為循環(huán)嵌套。內(nèi)嵌的循環(huán)中還可以再嵌套循環(huán),這就是多層循環(huán)。三種循環(huán)(while、do-while、for)都可以嵌套而且可以相互嵌套。但在循環(huán)的嵌套使用中,一定注意嵌套層次的關(guān)系,防止各層次間出現(xiàn)交叉套迭的情況,以免引起程序的混亂。規(guī)范使用代碼的縮格書寫形式,可清楚地表達(dá)嵌套的層次關(guān)系。二、循環(huán)嵌套【例2-11】【例2-11】打印九九表,形如:1*1=11*2=22*2=41*3=32*3=63*3=9……publicclassJiuJiuBiao{
publicstaticvoidmain(String[]args){
inti,j;
for(i=1;i<=9;i++){
for(j=1;j<=i;j++){
System.out.print(j+"*"+i+"="+i*j+"");
}
System.out.println();
}}}
三、其他流程控制語句
在Java中,break語句可用于switch分支結(jié)構(gòu)以及3種循環(huán)結(jié)構(gòu),用來強(qiáng)制跳出switch語句或終止循環(huán)。在循環(huán)語句中,break語句可直跳出循環(huán)體語句,終止循環(huán)語句的執(zhí)行,繼續(xù)執(zhí)行循環(huán)結(jié)構(gòu)后面的語句。1.break語句【例2-12】利用break語句終止循環(huán)。classBreakLoopDemo1{publicstaticvoidmain(Stringargs[]){for(inti=0;i<100;i++){if(i==10)break; //i為10時(shí)終止循環(huán)System.out.println("i:"+i);}
System.out.println("循環(huán)結(jié)束.");}}三、其他流程控制語句
continue語句只能出現(xiàn)在循環(huán)體語句中,作用是跳過當(dāng)前循環(huán)中continue語句以后的循環(huán)體語句,直接開始下一輪循環(huán)。2.continue語句【例2-13】輸入一組數(shù)據(jù),輸出其中的負(fù)數(shù),輸入0,則結(jié)束循環(huán)。importjava.util.Scanner;classContinueDemo{
publicstaticvoidmain(String[]args){
intdata;
Scannerin=newScanner(System.in);
System.out.print("請(qǐng)輸入一組整數(shù):");
while(true){
data=in.nextInt();
if(data==0)break;
elseif(data>0)continue;
elseSystem.out.println(data);
}}}三、其他流程控制語句
return語句可以使程序流程從當(dāng)前方法中退出,返回到調(diào)用該方法的語句處,繼續(xù)程序的執(zhí)行。return語句有以下兩種格式。return表達(dá)式;//返回一個(gè)值給調(diào)用該方法的語句,返回值的數(shù)據(jù)類型必須與方法聲明中的返回值類型一致。return;
//使程序流程返回到被調(diào)用處,不返回任何值。一般用于方法說明中用void聲明返回類型為空的情況。3.return語句四、循環(huán)結(jié)構(gòu)應(yīng)用
importjava.util.Scanner;publicclassLogin{
publicstaticvoidmain(String[]args){ Scannerinput=newScanner(System.in); Stringpassword=""; intn=0; do{
n++;
if(n>3)break;
System.out.println("請(qǐng)輸入密碼:");
password=input.next(); }while(!password.equals("adm123"));//內(nèi)置密碼:adm123【例2-14】設(shè)計(jì)程序,模擬登錄系統(tǒng)的密碼驗(yàn)證過程,允許用戶最多輸入三次密碼,三次都不正確不允許登錄。
if(n>3){
System.out.println("密碼三次輸入錯(cuò)誤,您無權(quán)登錄系統(tǒng)!");
}
else{
System.out.println("密碼輸入正確,登錄成功!");
}
}}四、循環(huán)結(jié)構(gòu)應(yīng)用
classPrimenumber{
publicstaticvoidmain(Stringargs[]){
System.out.println("**3~100間的所有素?cái)?shù)**");
intn=0;
for(inti=3;i<=100;i++){ //外層循環(huán)
intk=(int)Math.sqrt(i);
intisPrime=1;
for(intj=2;j<=k;j++){ //內(nèi)層循環(huán)
if(i%j==0)isPrime=0;
}
if(isPrime!=0){
System.out.print(""+i);
n++;
//每行打?。保皞€(gè)素?cái)?shù)
if(n%10==0)System.out.println();
}}}}【例2-15】求3~100間的所有素?cái)?shù)。四、循環(huán)結(jié)構(gòu)應(yīng)用
【例2-16】求Fibonacci數(shù)列:1,1,2,3,5,8,......的前20個(gè)數(shù)。該數(shù)列可以用一個(gè)通式表示為:
f1=1(n=1)
f2=1(n=2)
fn=fn-1+fn-2(n>=3)publicclassFibonacci{
publicstaticvoidmain(String[]args){ System.out.println("**Fibonacci數(shù)列的前20個(gè)數(shù)為:**"); longf1=1,f2=1; for(inti=1;i<=10;i++){
System.out.print(f1+""+f2+"");
//每次輸出兩個(gè)數(shù)
if(i%5==0)System.out.println();
//每行輸出10個(gè)數(shù)
f1=f1+f2; f2=f2+f1; }
}}任務(wù)實(shí)施對(duì)全班同學(xué)的成績(jī)進(jìn)行分類統(tǒng)計(jì),編寫程序之前要確定以下三個(gè)要素。1)循環(huán)條件:根據(jù)學(xué)生人數(shù)確定循環(huán)次數(shù)。2)循環(huán)體:對(duì)每位同學(xué)的成績(jī)進(jìn)行分析判斷、并進(jìn)行分類統(tǒng)計(jì)。3)循環(huán)控制:設(shè)置循環(huán)變量,控制循環(huán)次數(shù)。完成“工單2-3”訓(xùn)練任務(wù)同步訓(xùn)練課后作業(yè)P55課后作業(yè),四、2345§2-4班級(jí)學(xué)生成績(jī)分析處理Java面向?qū)ο蟪绦蛟O(shè)計(jì)教學(xué)目標(biāo)任務(wù)分析
期末考試結(jié)束之后,需要對(duì)學(xué)生成績(jī)進(jìn)行全面的總結(jié)分析,其中包括統(tǒng)計(jì)每一門課程的班級(jí)平均成績(jī)、成績(jī)排名及每位同學(xué)的成績(jī)統(tǒng)計(jì)等。
進(jìn)行這類班級(jí)成績(jī)分析,首先需要將所有學(xué)生的各科成績(jī)進(jìn)行存儲(chǔ),然后才能進(jìn)行統(tǒng)計(jì)分析處理,要存儲(chǔ)這種大批量的數(shù)據(jù)就需要使用一種新的數(shù)據(jù)存儲(chǔ)方式——數(shù)組。教學(xué)內(nèi)容1Java二維數(shù)組的創(chuàng)建及使用Java一維數(shù)組的創(chuàng)建及使用23字符串的使用一、Java一維數(shù)組的創(chuàng)建及使用數(shù)組是有限個(gè)相同類型數(shù)據(jù)的有序集合,每個(gè)數(shù)組有固定的長(zhǎng)度,在內(nèi)存中占一片連續(xù)的存儲(chǔ)空間。數(shù)組中的數(shù)據(jù)稱為數(shù)組元素,每個(gè)數(shù)組元素用數(shù)組名和下標(biāo)來唯一地標(biāo)識(shí),下標(biāo)就是數(shù)組元素在數(shù)組中的位置即序號(hào)。根據(jù)數(shù)組下標(biāo)的個(gè)數(shù),數(shù)組分為一維數(shù)組、二維數(shù)組和多維數(shù)組。1.一維數(shù)組的聲明一維數(shù)組聲明語法格式:
數(shù)據(jù)類型數(shù)組名[];或數(shù)據(jù)類型[]數(shù)組名;其中,數(shù)組元素的類型可以是基本類型,也可以是引用類型。數(shù)組名必須是一個(gè)合法的標(biāo)識(shí)符。例如,要保存一批學(xué)生的成績(jī),可以聲明一個(gè)名為score、元素類型為float的數(shù)組,定義方式為:
floatscore[];或float[]score;一、Java一維數(shù)組的創(chuàng)建及使用2.一維數(shù)組的創(chuàng)建在進(jìn)行了數(shù)組聲明之后,使用new操作符創(chuàng)建數(shù)組,為數(shù)組分配存儲(chǔ)空間后,數(shù)組才真正占用了一片連續(xù)的內(nèi)存單元,數(shù)組的長(zhǎng)度在此時(shí)被確定。創(chuàng)建數(shù)組的語法格式:
數(shù)組名=new數(shù)組類型[數(shù)組長(zhǎng)度];
例如,score=newfloat[10];
//創(chuàng)建含10個(gè)元素的實(shí)型數(shù)組可以將聲明數(shù)組和創(chuàng)建數(shù)組兩個(gè)步驟合在一起,用一條語句來實(shí)現(xiàn),其語法格式為:
數(shù)據(jù)類型數(shù)組名[]=new元素類型[數(shù)組長(zhǎng)度];或
數(shù)據(jù)類型[]數(shù)組名=new元素類型[數(shù)組長(zhǎng)度];例如:floatscore[]=newint[10];//創(chuàng)建數(shù)組數(shù)組中各元素通過下標(biāo)來標(biāo)識(shí),下標(biāo)從0開始,最大下標(biāo)值為數(shù)組長(zhǎng)度減1。對(duì)于score數(shù)組,系統(tǒng)為該數(shù)組的10個(gè)元素分配空間,10個(gè)元素的下標(biāo)分別為:
score[0]、score[1]、score[2],…,score[9]一、Java一維數(shù)組的創(chuàng)建及使用3.數(shù)組初始化語法格式:
數(shù)據(jù)類型
數(shù)組名[]={初值列表};或者
數(shù)據(jù)類型[]
數(shù)組名={初值列表};
此時(shí),系統(tǒng)會(huì)自動(dòng)按所給初值的個(gè)數(shù)計(jì)算出數(shù)組的長(zhǎng)度并分配相應(yīng)的空間,并把初值存入各元素所占用的內(nèi)存單元。例如:floatscore[]={81,62,43,84,85,96,67,78,69,90};int
intArray[]={2,4,6,8};char[]
chrArray={‘A’,’B’,’C’};一、Java一維數(shù)組的創(chuàng)建及使用4.一維數(shù)組元素的訪問對(duì)數(shù)組的訪問只能通過數(shù)組元素進(jìn)行,數(shù)組元素的引用格式為:
數(shù)組名[下標(biāo)]其中,下標(biāo)可以為整型常數(shù)或整型表達(dá)式?!纠?-17】求30個(gè)學(xué)生的平均成績(jī)。importjava.util.Scanner;publicclassAverage{
publicstaticvoidmain(Stringargs[]){floatscore[]=newfloat[30];intx;floatsum=0;
Scannerin=newScanner(System.in);System.out.print("輸入30個(gè)學(xué)生的成績(jī):");//以下輸入30個(gè)學(xué)生的成績(jī)存入數(shù)組score中
for(intk=0;k<30;k++)score[k]=in.nextFloat();//成績(jī)存入數(shù)組
//以下計(jì)算平均成績(jī)for(intk=0;k<30;k++)sum+=score[k];System.out.println("平均成績(jī)?yōu)椋?+sum/30);}}一、Java一維數(shù)組的創(chuàng)建及使用5.利用for增強(qiáng)語句遍歷數(shù)組for增強(qiáng)語句也稱為for-each循環(huán),基本語法格式為:
for(<迭代變量聲明>:<數(shù)組名>){
語句;
}例如對(duì)上例數(shù)組score的訪問,可使用如下語句。
for(floatm:score){
System.out.println(m);
}該循環(huán)輸出score數(shù)組中的所有元素。利用for增強(qiáng)語句改寫【例2-17】一、Java一維數(shù)組的創(chuàng)建及使用6.數(shù)組長(zhǎng)度屬性及常用操作數(shù)組長(zhǎng)度屬性數(shù)組作為對(duì)象,所有的數(shù)組都有一個(gè)屬性length,表示數(shù)組的長(zhǎng)度,使用方法為:
數(shù)組名.length
例如:int[]num=newnum[10];則num.length的值為10。訪問數(shù)組元素時(shí),下標(biāo)取值為0至數(shù)組名.length-1,如果下標(biāo)超出范圍,則運(yùn)行時(shí)將產(chǎn)生“數(shù)組訪問越界異常”。一、Java一維數(shù)組的創(chuàng)建及使用6.數(shù)組長(zhǎng)度屬性及常用操作數(shù)組工具類ArraysJava系統(tǒng)提供了一個(gè)工具類Arrays,該類提供用于數(shù)組操作的各種方法。如對(duì)數(shù)組的排序和查詢等操作,可直接調(diào)用Arrays中的相應(yīng)方法完成。如:
Arrays.sort(數(shù)組名);//實(shí)現(xiàn)對(duì)指定數(shù)組的排序(升序)
Arrays.binarySearch(數(shù)組名,關(guān)鍵字)//在數(shù)組中查詢指定關(guān)鍵字binarySearch()方法采用二分查找法,所以要求數(shù)組元素必須有序排列。如果數(shù)組中包含關(guān)鍵字,則返回一個(gè)正數(shù);否則返回一個(gè)負(fù)數(shù)。
一、Java一維數(shù)組的創(chuàng)建及使用【例2-18】產(chǎn)生20個(gè)100以內(nèi)的隨機(jī)整數(shù),對(duì)其進(jìn)行排序并輸出,查找其中是否包含數(shù)值85。importjava.util.Arrays; //導(dǎo)入數(shù)組工具類Arraysimportjava.util.Random; //導(dǎo)入產(chǎn)生隨機(jī)數(shù)的類RandompublicclassArrayDemo{
publicstaticvoidmain(String[]args){ intnum[]=newint[10]; Randomrandom=newRandom();//創(chuàng)建隨機(jī)數(shù)對(duì)象 for(inti=0;i<num.length;i++){
num[i]=random.nextInt(100);//獲取100以內(nèi)整型隨機(jī)數(shù)
System.out.print(num[i]+"\t"); } Arrays.sort(num); //對(duì)數(shù)組進(jìn)行排序 System.out.println("\n排序之后----------------"); for(inti=0;i<num.length;i++){
System.out.print(num[i]+"\t"); }
if(Arrays.binarySearch(num,85)>0)
//查找關(guān)鍵字85
System.out.println("\n數(shù)組中包含關(guān)鍵字:85");else
System.out.println("\n數(shù)組中不包含關(guān)鍵字:85");
}}一、Java一維數(shù)組的創(chuàng)建及使用【例2-19】有一個(gè)整數(shù)數(shù)組,其中存放著序列1,3,5,7,9,11,13,15,17,19。請(qǐng)將該序列逆序存放并輸出。publicclassBack{
publicstaticvoidmain(Stringargs[]){
inta[]={1,3,5,7,9,11,13,15,17,19};
intt;
System.out.println("數(shù)組的初始狀態(tài)為:");
for(inti=0;i<a.length;i++)
System.out.print(""+a[i]);
System.out.println();
for(inti=0;i<a.length/2;i++){
t=a[i];
a[i]=a[a.length-i-1];
a[a.length-i-1]=t;
}
System.out.println("數(shù)組逆序存放后的狀態(tài)為:");
for(inti=0;i<a.length;i++)
System.out.print(""+a[i]);
}} 二、二維數(shù)組的創(chuàng)建及使用二維數(shù)組常用于表示一張二維表格。Java中,二維數(shù)組可看作由一維數(shù)組組成的數(shù)組,即二維數(shù)組中每個(gè)元素又是一個(gè)一維數(shù)組。二維數(shù)組可以先聲明再創(chuàng)建,也可以在聲明的同時(shí)進(jìn)行創(chuàng)建。聲明二維數(shù)組
語法格式:數(shù)據(jù)類型數(shù)組名[][];或數(shù)據(jù)類型[][]數(shù)組名;例如:inta[][];
floatarray[][];二、二維數(shù)組的創(chuàng)建及使用創(chuàng)建二維數(shù)組1)同時(shí)為二維數(shù)組的行和列分配存儲(chǔ)空間
基本語法格式:數(shù)據(jù)類型[][]數(shù)組名=new數(shù)據(jù)類型[行數(shù)][列數(shù)];例如:int[][]a=newint[3][4];//創(chuàng)建一個(gè)3行4列的整型二維數(shù)組2)先指定二維數(shù)組的行數(shù),再分別為每一行指定列數(shù)例如:inta[][]=newint[3][];
a[0]=newint[4];
a[1]=newint[4];
a[2]=newint[4];二、二維數(shù)組的創(chuàng)建及使用Java中允許二維數(shù)組中每一行的元素個(gè)數(shù)可以不同,如:
intb[][]=newint[3][];b[0]=newint[3];b[1]=newint[2];b[2]=newint[4];通過初始化創(chuàng)建二維數(shù)組例如:intarrayA[][]={{1,2,3},{4,5,6},{7,8,9}};
//創(chuàng)建3行3列的二維數(shù)組此時(shí),系統(tǒng)會(huì)自動(dòng)按初值表中的數(shù)據(jù)個(gè)數(shù)計(jì)算出數(shù)組的長(zhǎng)度并分配相應(yīng)的空間。再如:intarrayB[][]={{1,2,3,4},{5,6},{7,8,9},{10,11}};創(chuàng)建了一個(gè)不規(guī)則的二維級(jí)數(shù),共4行,每行的元素個(gè)數(shù)分別為4、2、3、2。二維數(shù)組中各元素通過兩個(gè)下標(biāo)來區(qū)分,每個(gè)下標(biāo)的最小值為0,最大值為行數(shù)或列數(shù)減1。二、二維數(shù)組的創(chuàng)建及使用二維數(shù)組元素訪問格式:
數(shù)組名[行下標(biāo)][列下標(biāo)]如:arrayA[i][j]表示第i行第j列的元素。二維數(shù)組也具有l(wèi)ength屬性,數(shù)組名.length表示二維數(shù)組的行數(shù),數(shù)組名[行下標(biāo)].length則表示該行的列數(shù)。二、二維數(shù)組的創(chuàng)建及使用【例2-20】二維數(shù)組的定義、初始化及輸出。publicclassMulArray{publicstaticvoidmain(Stringargs[]){intarrayA[][]={{1,2,3},{4,5,6},{7,8,9}};System.out.println(arrayA[0][0]+""+arrayA[0][1]+""+arrayA[0][2]);System.out.println(arrayA[1][0]+""+arrayA[1][1]+""+arrayA[1][2]);System.out.println(arrayA[2][0]+""+arrayA[2][1]+""+arrayA[2][2]);System.out.println();arrayA[0][0]=arrayA[0][1]+arrayA[0][2];arrayA[1][1]=arrayA[1][0]+arrayA[1][2];arrayA[2][2]=arrayA[2][0]+arrayA[2][1];for(inti=0;i<=2;i++){for(intj=0;j<=2;j++) System.out.print(arrayA[i][j]+"");System.out.println();} }} 二、二維數(shù)組的創(chuàng)建及使用【例2-21】二維數(shù)組動(dòng)態(tài)創(chuàng)建示例。publicclassArrayOfArraysDemo{publicstaticvoidmain(String[]args){int[][]aMatrix=newint[4][];for(inti=0;i<aMatrix.length;i++){aMatrix[i]=newint[i+1];//創(chuàng)建子數(shù)組for(intj=0;j<aMatrix[i].length;j++){aMatrix[i][j]=i+j;}}//輸出數(shù)組元素for(inti=0;i<aMatrix.length;i++){for(intj=0;j<aMatrix[i].length;j++){System.out.print(aMatrix[i][j]+"");}System.out.println();}}} 二、二維數(shù)組的創(chuàng)建及使用【例2-22】求一個(gè)3×3矩陣的兩條對(duì)角線上的元素之和。importjava.util.Scanner;publicclassSumBubble{
publicstaticvoidmain(Stringargs[]){
intsum=0;
inta[][]=newint[3][3];
Scannerin=newScanner(System.in);
for(inti=0;i<3;i++){
for(intj=0;j<3;j++){
a[i][j]=in.nextInt();
}
}
for(inti=0;i<3;i++){
for(intj=0;j<3;j++){
if(((i+j)==2)||(i==j))
sum=sum+a[i][j];}
}
System.out.println("兩對(duì)角線元素之和為:"+sum);
}} 三、字符串的使用Java中對(duì)字符串的處理通常使用兩個(gè)系統(tǒng)類String和StringBuffer,這兩個(gè)類都在java.lang包中。String類創(chuàng)建的字符串是常量,是不可更改的,每次需要改變字符串時(shí)都要?jiǎng)?chuàng)建一個(gè)新的對(duì)象來保存改變后的內(nèi)容。StringBuffer類創(chuàng)建的字符串是變量,其內(nèi)容是可以改變的。所以,String類常用于創(chuàng)建不經(jīng)常對(duì)內(nèi)容進(jìn)行更改的字符串,StringBuffer類常用于需要對(duì)一個(gè)字符串進(jìn)行修改,例如插入,刪除等操作的情況。三、字符串的使用1.String類的使用(1)字符串創(chuàng)建使用字符串常量直接初始化一個(gè)字符串對(duì)象。
如:Stringstr="Thisisateststring.";
Stringstr="This"+"is"+"ateststring.";//“+”連接兩個(gè)字符串使用String類提供的構(gòu)造方法創(chuàng)建字符串對(duì)象。
Sting類提供了多個(gè)不同的構(gòu)造方法,允許使用不同的數(shù)據(jù)源為字符串對(duì)象提供初始值。
String(); //創(chuàng)建空字符串
String(byte[]); //創(chuàng)建字符串,其值由一個(gè)字節(jié)數(shù)組的內(nèi)容設(shè)置
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 園林建設(shè)專項(xiàng)施工方案
- 2024年廣東省中考滿分作文《當(dāng)好自己故事的主角》3
- 合作商超協(xié)議合同范本
- 胃造口術(shù)后護(hù)理
- 農(nóng)莊永久出售合同范例
- 交運(yùn)股合同范例
- 制定高效的日常生產(chǎn)計(jì)劃
- 加強(qiáng)知識(shí)管理的有效方式計(jì)劃
- 品牌數(shù)字化轉(zhuǎn)型的路徑與挑戰(zhàn)計(jì)劃
- 項(xiàng)目管理的最佳實(shí)踐計(jì)劃
- 2025年安徽電氣工程職業(yè)技術(shù)學(xué)院?jiǎn)握新殬I(yè)傾向性測(cè)試題庫學(xué)生專用
- 2025年皖西衛(wèi)生職業(yè)學(xué)院?jiǎn)握新殬I(yè)技能測(cè)試題庫審定版
- unctad -全球投資趨勢(shì)監(jiān)測(cè) 第 48 期 Global Investment Trends Monitor,No. 48
- 2025年福建省高職單招計(jì)算機(jī)類職業(yè)技能測(cè)試題及答案(供參考)
- 電鍍園區(qū)現(xiàn)場(chǎng)管理
- 七年級(jí)歷史下冊(cè) 第一單元 綜合測(cè)試卷(人教福建版 2025年春)
- 學(xué)校在鑄牢中華民族共同體意識(shí)教育工作情況報(bào)告
- 2025年安徽淮北市建投控股集團(tuán)招聘筆試參考題庫含答案解析
- 《孤獨(dú)的小螃蟹》導(dǎo)讀課件
- 城市軌道交通行車組織 課件 項(xiàng)目3 車站行車作業(yè)組織
- GA/T 2145-2024法庭科學(xué)涉火案件物證檢驗(yàn)實(shí)驗(yàn)室建設(shè)技術(shù)規(guī)范
評(píng)論
0/150
提交評(píng)論