java 流程控制語句_第1頁
java 流程控制語句_第2頁
java 流程控制語句_第3頁
java 流程控制語句_第4頁
java 流程控制語句_第5頁
已閱讀5頁,還剩64頁未讀 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、 語句是程序的基本組成單位。語句是程序的基本組成單位。1. 簡單語句簡單語句 變量說明語句、賦值語句、方法調用語句、空語句等被稱為簡單語變量說明語句、賦值語句、方法調用語句、空語句等被稱為簡單語句。句。 在在JavaJava語言中,一個語言中,一個簡單語句總是以分號結尾的。簡單語句總是以分號結尾的。例:例:int a=1,b; /變量說明語句變量說明語句 b=2; /賦值語句賦值語句 ; /空語句空語句 System.out.print(b); /方法調用語句方法調用語句 2. 復合語句復合語句 復合語句復合語句:由大括號:由大括號“ ” ”括起來的語句。括起來的語句。 復合語句的復合語句的

2、內可放內可放0n0n個語句,每條語句都應該符合個語句,每條語句都應該符合JavaJava語句的語法。語句的語法。例例. if (a0). if (ab) min=b;3.1.1 if 語句語句條條 件件布爾表達式布爾表達式語句語句if的后繼語句的后繼語句falsetrue 簡單簡單if語句的執行流程圖語句的執行流程圖 語法形式:語法形式: if (布爾表達式布爾表達式) 語句語句1 else 語句語句2 注意:注意:條件必須是布爾表達式。語句條件必須是布爾表達式。語句1 1、語句、語句2 2可以是復合可以是復合語句。語句。 例例. if (a0) if (check0) x1=(-b+(flo

3、at)Math.sqrt(check)/(2 x1=(-b+(float)Math.sqrt(check)/(2* *a);a); x2=(-b-(float)Math.sqrt(check)/(2 x2=(-b-(float)Math.sqrt(check)/(2* *a);a); System.out.println(x1=+x1); System.out.println(x1=+x1); System.out.println(x2=+x2); System.out.println(x2=+x2); else else / /* *請自己填寫請自己填寫* */ / 練習:練習: 編寫一程序

4、,運行后從鍵盤輸入二個整數,輸出編寫一程序,運行后從鍵盤輸入二個整數,輸出 其中的最小數。其中的最小數。課堂練習:求最小數課堂練習:求最小數import java.io.import java.io.* *; ; public class Minpublic class Minpublic static void mainpublic static void main(String args)(String args) throws throws IOExceptionIOException byte buf=new byte20; byte buf=new byte20; String st

5、r ; int a, b, min;String str ; int a, b, min; System.out.println(System.out.println(請輸入二個整數:請輸入二個整數:);); System.in.read(buf);System.in.read(buf); /從鍵盤讀一數字串存于從鍵盤讀一數字串存于bufbuf中中str=new String(buf);str=new String(buf); /buf /buf 轉換成字符串轉換成字符串 a=Integer.parseInt(str.trim();a=Integer.parseInt(str.trim();

6、/ /數字串轉換成整數數字串轉換成整數System.in.read(buf); str=new String(buf);System.in.read(buf); str=new String(buf); b=Integer.parseInt(str.trim();b=Integer.parseInt(str.trim(); min=a;min=a;if (minb) min=b;if (minb) min=b;System.out.println(System.out.println(最小數是最小數是+min);+min);3.1.2 switch 語句語句 switchswitch語句根據測

7、試表達式的結果來執行多個可能操作中的一個,語句根據測試表達式的結果來執行多個可能操作中的一個,它的語法形式如下:它的語法形式如下:switchswitch語句的流程如下所示。語句的流程如下所示。 switch( switch(測試表達式測試表達式) ) case case 常量常量1 1:語句塊:語句塊1 1 break; break; case case 常量常量2 2:語句塊:語句塊2 2 break; break; case case 常量常量n n:語句塊:語句塊n n break; break; default: default: 語句塊語句塊n+1 n+1 測試表達式語句塊1bre

8、ak語句塊2breakbreak語句塊n語句塊n+1后繼語句常量2defaultswitch語句的流程圖常量1常量n switchswitch語句中的每個語句中的每個“case“case常量常量:” :” 稱為一個稱為一個casecase子句,代表一個子句,代表一個casecase分支的入口。分支的入口。 switch switch語句的注意點如下:語句的注意點如下:(1 1)測試表達式必須是)測試表達式必須是bytebyte、charchar、shortshort、intint類型的表達式類型的表達式, ,而而不能不能使用浮點類型或使用浮點類型或longlong類型類型, ,也也不能為一個字

9、符串不能為一個字符串。(2 2)switchswitch語句將測試表達式的值依次與每個語句將測試表達式的值依次與每個casecase子句中的常量值相子句中的常量值相比較。如果匹配成功,則執行該比較。如果匹配成功,則執行該casecase子句中常量值后的語句,直到遇到子句中常量值后的語句,直到遇到breakbreak語句為止。語句為止。(3 3)casecase子句中常量的類型必須與測試表達式的類型相容,而且每個子句中常量的類型必須與測試表達式的類型相容,而且每個casecase子句中常量的值必須是不同的。常量也可以是常量表達式子句中常量的值必須是不同的。常量也可以是常量表達式( (不含變量、不

10、含變量、方法的表達式方法的表達式) )。(4 4)defaultdefault子句是可選的,當測試表達式的值與任一子句是可選的,當測試表達式的值與任一casecase子句中的值都子句中的值都不匹配時,就執行不匹配時,就執行defaultdefault后的語句。如果表達式的值與任一后的語句。如果表達式的值與任一casecase子句中的子句中的值都不匹配且沒有值都不匹配且沒有defaultdefault子句,則程序不執行任何操作,而是直接跳出子句,則程序不執行任何操作,而是直接跳出switchswitch語句,進入后續程序段的執行。語句,進入后續程序段的執行。 (5 5)breakbreak語句用

11、來在執行完一個語句用來在執行完一個casecase分支后,使程序跳出分支后,使程序跳出switchswitch語句,語句,執行執行switchswitch語句的后續語句。因為語句的后續語句。因為casecase子句只是起到一個標號的作用,用子句只是起到一個標號的作用,用來查找匹配的入口,然后從此處開始執行,對后面的來查找匹配的入口,然后從此處開始執行,對后面的casecase子句的值不再進子句的值不再進行比較,而是直接執行其后的語句。因此一般情況下,每個行比較,而是直接執行其后的語句。因此一般情況下,每個casecase分支后,分支后,要用要用breakbreak來終止后面的來終止后面的cas

12、ecase分支語句的執行。分支語句的執行。(6 6)casecase分支中包括多個執行語句時,可以不用花括號括起。分支中包括多個執行語句時,可以不用花括號括起。(7 7)通過)通過if-elseif-else語句可以實現語句可以實現switchswitch語句所有的功能。但通常使用語句所有的功能。但通常使用switchswitch語句更簡練,且可讀性強,程序的執行效率也高。語句更簡練,且可讀性強,程序的執行效率也高。(8 8)if-elseif-else語句可以基于一個范圍內的值或一個條件來進行不同的操語句可以基于一個范圍內的值或一個條件來進行不同的操作,但作,但switchswitch語句中

13、的每個語句中的每個casecase子句都必須對應一個單值。子句都必須對應一個單值。class SwitchDemoclass SwitchDemo public static void public static void mainmain(String args) (String args) int month=7; int month=7; String season; String season; switch (month) switch (month) case 12: case 12: case 1: case 1: case 2: case 2: season= season=冬

14、季冬季; ; break; break; case 3: case 3: case 4: case 4: case 5: case 5: season= season=春季春季 ; break; break; case 6: case 6: case 7: case 7: case 8: season= case 8: season=夏季夏季; ; break; break; case 9: case 9: case 10: case 10: case 11: season= case 11: season=秋季秋季; ; break; break; default: season= defa

15、ult: season=錯錯!;!; System.out.println System.out.println(month+(month+月是月是+season);+season); ss 例例. . 用用switchswitch語句判斷一個月份屬于一年中哪個季節語句判斷一個月份屬于一年中哪個季節( (春春、夏夏、秋秋、冬冬) ) (方法一)(方法一) 循環語句的作用是反復執行同一段代碼直到滿足結束條件。循環語句的作用是反復執行同一段代碼直到滿足結束條件。許多問題中需要用到循環控制。例如累加、累乘等。許多問題中需要用到循環控制。例如累加、累乘等。 Java循環語句有循環語句有while、do

16、-while和和for三種。三種。 3.2 循環語句循環語句3.2.1 3.2.2 3.2.3 u while while語句形式如下:語句形式如下: while (while (布爾表達式布爾表達式) ) 語句語句 whilewhile語句執行的過程為:執行語句執行的過程為:執行whilewhile語句時,首先判斷布爾表語句時,首先判斷布爾表達式的值,當布爾表達式的值為達式的值,當布爾表達式的值為truetrue,則執行循環體,然后再判斷,則執行循環體,然后再判斷條件,直到布爾表達式的值為條件,直到布爾表達式的值為falsefalse,停止執行語句。,停止執行語句。 使用使用whilewhi

17、le語句應注意以下兩點:語句應注意以下兩點:(1 1)該語句是先判斷后執行,若一開始條件就不成立,就不執行)該語句是先判斷后執行,若一開始條件就不成立,就不執行循環體。循環體。(2 2)在循環體內一定要有改變條件的語句,否則是死循環。)在循環體內一定要有改變條件的語句,否則是死循環。whilewhile語句的流程圖如下所示。語句的流程圖如下所示。3.2.1 while 語句語句布爾表達式布爾表達式循環體循環體falsetrue while語句流程圖class sum public static void main(String args) int n=100; /循環總數循環總數n=100 i

18、nt i=1; /循環次數,初值為循環次數,初值為 float s=0; /和和s為實型為實型 while (i=n) /循環條件循環條件,循環總數循環總數100 s=s+1.0f/i; /s增加增加1/i, 1.0f表示是表示是float型型 i+; /循環次數加循環次數加 System.out.println(s = +s); 例例. . 用用whilewhile循環語句計算循環語句計算s=1+1/2+1/3+1/100s=1+1/2+1/3+1/100。 JavaJava還提供了另一個與還提供了另一個與whilewhile語句類似的語句語句類似的語句do-do-whilewhile語句。

19、語句。do-whiledo-while語句的語法形式如下:語句的語法形式如下: dodo 語句語句 while ( while (布爾表達式布爾表達式); ); do-whiledo-while語句執行的過程為:先執行一次循環體中的語句,然后測語句執行的過程為:先執行一次循環體中的語句,然后測試布爾表達式的值,如果布表達式的值為真,那就繼續執行循環體,試布爾表達式的值,如果布表達式的值為真,那就繼續執行循環體,do-whiledo-while語句將不斷地測試布爾表達式的值并執行循環體中的內容,語句將不斷地測試布爾表達式的值并執行循環體中的內容,直到布爾表達式的值為假為止。直到布爾表達式的值為假

20、為止。 do-whiledo-while語句的流程圖如下所示。語句的流程圖如下所示。3.2.2 do-while 語句語句布爾表達式布爾表達式循環體循環體truefalseDo- while語句流程圖 do-whiledo-while語句和語句和whilewhile語句的不同之處是語句的不同之處是: do-while: do-while語句總是先進入循環,語句總是先進入循環,執行一次循環體后才檢測循環條件,以決定是否繼續循環,執行一次循環體后才檢測循環條件,以決定是否繼續循環,而而while語句是語句是先測試條件,再決定是否進入循環。所以,用先測試條件,再決定是否進入循環。所以,用do-whi

21、le語句時,循環體至語句時,循環體至少執行一次。少執行一次。 例例. . 用用do-whiledo-while循環語句計算循環語句計算s=1+1/2+1/3+1/4+1/100s=1+1/2+1/3+1/4+1/100。 class sum class sum public static voidpublic static void main main(String args)(String args) int i=1; int i=1; /循環次數,初值為循環次數,初值為 float s=0; float s=0; /和和s s為實型為實型 do do /循環條件循環條件 s=s+1.0f/

22、i; s=s+1.0f/i; /s/s增加增加1/i,1.0f1/i,1.0f表示是表示是floatfloat型型 i+; i+; /循環次數加循環次數加 while (i=100); while (i=100); /要循環要循環100100次次 System.out.println(s= +s);System.out.println(s= +s); forfor語句是循環的另一種表示形式。語句是循環的另一種表示形式。forfor語句的語法形式為:語句的語法形式為: forfor(表達式(表達式1 1;表達式;表達式2 2;表達式;表達式3 3) 語句語句 forfor是是forfor語句的關

23、鍵字,語句為語句的關鍵字,語句為forfor語句的循環體,若有多個語句,語句的循環體,若有多個語句,需構成復合語句。需構成復合語句。 for for語句中循環控制變量必須是有序類型,常用的有整型、字符型、語句中循環控制變量必須是有序類型,常用的有整型、字符型、布爾型。循環控制變量初值和終值通常是與控制變量類型相一致的一個布爾型。循環控制變量初值和終值通常是與控制變量類型相一致的一個常量,也可以是表達式。循環次數由初值和終值決定。執行過程:常量,也可以是表達式。循環次數由初值和終值決定。執行過程:(1 1)按表達式)按表達式1 1將初值賦給循環控制變量。將初值賦給循環控制變量。(2 2)按表達式

24、)按表達式2 2判斷循環是否成立,即判斷控制變量的值判斷循環是否成立,即判斷控制變量的值3.2.3 for 語句語句 是否越過終值(未越過終值為條件成立,越過終值為條件不是否越過終值(未越過終值為條件成立,越過終值為條件不成立),若條件不成立、轉步驟(成立),若條件不成立、轉步驟(6 6)。)。 (3 3)若條件成立,則執行循環體。)若條件成立,則執行循環體。(4 4)按表達式)按表達式3 3修改控制變量。對于遞增型為原控制變量值的后續;對修改控制變量。對于遞增型為原控制變量值的后續;對于遞減型為原控制變量值的前導。于遞減型為原控制變量值的前導。(5 5)返回步驟()返回步驟(2 2)。()。

25、(6 6)結束循環。)結束循環。 求解表達式求解表達式1表達式表達式2循環體循環體求解表達式求解表達式3for語句的下一語句語句的下一語句falsetruefor語句的流程圖例例. . 求求FibonacciFibonacci數列的前數列的前4040個數項。個數項。 FibonacciFibonacci數列:數列:1 1,1 1,2 2,3 3,5 5,8 8,1313,2121,3434,從數列看到:從數列看到: F1=1 (n=1) F1=1 (n=1) F2=1 (n=2) F2=1 (n=2) Fn=F Fn=Fn-1n-1+F+Fn-2n-2 (n3) (n3) forfor語句使用

26、的一些技巧:語句使用的一些技巧: 有時,有時,forfor語句在表達式語句在表達式1 1和表達式和表達式3 3的位置上需要包含多個表達式,的位置上需要包含多個表達式,這時可使用這時可使用JavaJava提供的逗號運算符來實現。提供的逗號運算符來實現。 逗號運算符是用逗號逗號運算符是用逗號“,” ,” 分隔多個表達式分隔多個表達式, , 被看作一個表達式。被看作一個表達式。這樣這樣就可以在只能放一個表達式的地方放任意多個表達式,只須用逗號將它們就可以在只能放一個表達式的地方放任意多個表達式,只須用逗號將它們分隔開。如:分隔開。如: for for ( ( i=1, j=10i=1, j=10;i

27、jij;i+, j-i+, j- ) ) 表達式表達式1 1、表達式、表達式2 2及表達式及表達式3 3都可以為空語句都可以為空語句( (但分號不能省略但分號不能省略) ),三,三者均為空的時候,相當于一個無限循環。如:者均為空的時候,相當于一個無限循環。如: for( ; ; ) for( ; ; ) 注意點注意點: : 由于由于JavaJava語句是用分號結束的,一個容易犯的錯誤是在語句是用分號結束的,一個容易犯的錯誤是在forfor語語句的圓括號后面加了一個不應有的分號。句的圓括號后面加了一個不應有的分號。例如:下面的程序是想要計算:例如:下面的程序是想要計算:1+2+.+991+2+.

28、+99 在上例中,分號被放在循環體的前邊,相當于在上例中,分號被放在循環體的前邊,相當于forfor語句的循環體為空語語句的循環體為空語句,其結果是句,其結果是forfor循環體什么都不處理。此程序的編譯不會出任何錯誤,循環體什么都不處理。此程序的編譯不會出任何錯誤,但當它運行時并不產生預期的但當它運行時并不產生預期的結果。結果。運行上面這個程序會得到如下輸出結果:運行上面這個程序會得到如下輸出結果: value=100value=100 一般來說,在循環次數預知的情況下,用一般來說,在循環次數預知的情況下,用forfor語句比較方便,而語句比較方便,而whilewhile語語句和句和do-w

29、hiledo-while語句比較適合于循環次數不能預先確定的情況。語句比較適合于循環次數不能預先確定的情況。循環嵌套 一個循環體內又包含另一個完整的循環結構,稱為循環的嵌套。內一個循環體內又包含另一個完整的循環結構,稱為循環的嵌套。內嵌的循環中還可以嵌套循環,這就是多重循環。上述三種循環(嵌的循環中還可以嵌套循環,這就是多重循環。上述三種循環(whilewhile循環,循環,do-whiledo-while循環和循環和forfor循環)語句之間可以相互嵌套使用。循環)語句之間可以相互嵌套使用。 例例. . 打印下面的數字圖案(每行打打印下面的數字圖案(每行打5 5個數字,每行各列數的值等于第個

30、數字,每行各列數的值等于第一列數乘自己所在列號):一列數乘自己所在列號): 1 2 3 4 5 1 2 3 4 5 2 4 6 8 10 2 4 6 8 10 3 6 9 12 15 3 6 9 12 15 4 8 12 16 20 4 8 12 16 20 5 10 15 20 25 5 10 15 20 25 u 循環嵌套循環嵌套public class Loop_Looppublic class Loop_Looppublic static void public static void mainmain(String args)(String args) int I,J,K; int

31、I,J,K; /I/I表示行號表示行號,J,J表示列號表示列號,K,K存臨時計算的值存臨時計算的值 for (I=1;I=5;I+ ) for (I=1;I=5;I+ ) for ( J=1;J=5;J+) for ( J=1;J=5;J+) K=I K=I* *J; System.out.print(K+ ); J; System.out.print(K+ ); System.out.println(); System.out.println(); /每打每打5 5列換行列換行 例例. . 百雞問題。百雞問題。 已知公雞已知公雞5 5元元1 1只,母雞只,母雞3 3元一只,小雞元一只,小雞1

32、 1元元3 3只,要求用只,要求用100100元剛好買元剛好買100100只雞,問有多少種采購方案。只雞,問有多少種采購方案。 分析分析: : 設變量設變量I I、J J、K K分別代表公雞數、母雞數及小雞數,則應滿足下分別代表公雞數、母雞數及小雞數,則應滿足下列一些條件列一些條件: : I+J+K=100( I+J+K=100(只只) ),I,J,KI,J,K 0 0; ; 5I+3J+K/3=100 5I+3J+K/3=100(元)(元); ; 若用若用100100元全部買公雞,最多只能買元全部買公雞,最多只能買2020只只, , 所以所以I20;I20;同樣地母雞最多同樣地母雞最多只能買

33、只能買3333只,所以只,所以J33; J33; 而小雞數目就是而小雞數目就是100-I-J;100-I-J; 根據以上分析,可編程如下:根據以上分析,可編程如下:例例. .百雞問題百雞問題public class Loop_Loop public static void main(String args) int I,J,K; System.out.println(公雞公雞 母雞母雞 小雞小雞); for (I=0; I=20; I+ ) for ( J=0; J=33; J+) K=100-I-J; if (5*I+3*J+K/3.0=100) /注意注意“K/3.0” System.ou

34、t.println(I+ +J+ +K); 循環語句正常結束是在循環條件表達式的值變為循環語句正常結束是在循環條件表達式的值變為false的的 時候,時候,但有時即使測試的條件為但有時即使測試的條件為true,也希望循環立即終止,這時可以用,也希望循環立即終止,這時可以用跳轉語句跳轉語句break或或continue語句實現。語句實現。continue語句只能用于循語句只能用于循環語句中。環語句中。break可用于可用于switch語句中,亦可用于循環語句中語句中,亦可用于循環語句中 注意:注意:Java中不支持中不支持goto語句。語句。 3.3 跳轉語句跳轉語句3.3.1 3.3.2 br

35、eakbreak語句的一般語法格式為:語句的一般語法格式為: break break 標號標號 ; 其中,用其中,用“ ” ”括起的標號部分是可選的。括起的標號部分是可選的。 1.1.不帶標號的情況不帶標號的情況 此時,此時,breakbreak語句的功能是語句的功能是終止終止breakbreak所在的循環語句所在的循環語句, ,轉去執行轉去執行其后的第一條語句其后的第一條語句。 對于不帶標號的對于不帶標號的breakbreak語句,在執行時有兩個特點:語句,在執行時有兩個特點: 1) 1) 在有多重循環時,它只能使循環從本層的循環跳出來;在有多重循環時,它只能使循環從本層的循環跳出來; 2)

36、 2) 跳出循環后轉移到本層循環的下一個語句。跳出循環后轉移到本層循環的下一個語句。3.3.1 break 語句語句public class breakout public class breakout public static void main(String args) public static void main(String args) throws IOException int I,J,K; char ch= ; int I,J,K; char ch= ; for (I=1;I=1;I+ ) / for (I=1;I=1;I+ ) /最外層循環最外層循環 for ( J=1;J

37、=2;J+) / for ( J=1;J=2;J+) /第二層循環第二層循環 for ( K=1;K=2;K+) / for ( K=1;K=2;K+) /內層循環內層循環 ch=(char)System.in.read(); ch=(char)System.in.read(); if (ch=c) break ; / if (ch=c) break ; /結束內層循環語句結束內層循環語句 System.out.println(333); System.out.println(333); if (ch= if (ch=b b) break ; /) break ; /結束第二層循環語句結束第二

38、層循環語句 System.out.println(222); System.out.println(222); if (ch= if (ch=a a) break ; /) break ; /結束最外層循環語句結束最外層循環語句 System.out.println(111); System.out.println(111); 例例. .不帶標號的不帶標號的breakbreak語句語句2.2.帶標號的情況帶標號的情況 標號就是加在語句前面的一個合法的標識符,其后跟一個冒號。如下標號就是加在語句前面的一個合法的標識符,其后跟一個冒號。如下所示:所示: 標號:語句標號:語句 標號只是起到對語句標識

39、的作用。標號只是起到對語句標識的作用。 帶標號的帶標號的breakbreak語句的功能是使程序語句的功能是使程序結束標號指明的外層循環結束標號指明的外層循環語句,執行該外層循環語句的后繼語句。語句,執行該外層循環語句的后繼語句。標號應該定義在標號應該定義在( (要結要結束的束的) )外層循環語句的開始處。外層循環語句的開始處。 帶標號的帶標號的breakbreak語句的一種典型用法就是實現語句的一種典型用法就是實現breakbreak語句所在的循環語句所在的循環的外層循環語句(從內部直接跳出來)。的外層循環語句(從內部直接跳出來)。 例如:例如:import java.io.*;class b

40、reakto_A public static void main(String args) throws IOException int i,j; char ch= ; A: /標號標號A, 外層循環外層循環 for (i=1;i=2;i+ ) for ( j=1;j=1;j+) /內層循環內層循環 ch = (char) System.in.read(); if (ch = a) break A; /結束結束A對應的循環語句對應的循環語句(外層循環外層循環) System.out.println(222); System.out.println(111); continuecontinue語

41、句只能在循環語句中使用。它和語句只能在循環語句中使用。它和breakbreak語句的區別是語句的區別是continuecontinue語句只結束所在循環語句的本次循環,而不是終止整個循環語語句只結束所在循環語句的本次循環,而不是終止整個循環語句的執行;而句的執行;而breakbreak語句則是結束整個循環語句的執行。語句則是結束整個循環語句的執行。continuecontinue語句語句的一般語法格式為:的一般語法格式為: continue continue 標號標號 ; 其中,用其中,用“ ”括起的標號部分是可選的。括起的標號部分是可選的。1.1.不帶標號的使用情況不帶標號的使用情況 此時,

42、此時,continuecontinue語句用來結束所在循環語句的本次循環,即跳過循語句用來結束所在循環語句的本次循環,即跳過循環體中環體中continuecontinue語句后面的語句,回到循環體的條件測試部分繼續執行。語句后面的語句,回到循環體的條件測試部分繼續執行。 不帶標號不帶標號continuecontinue語句和不帶標號的語句和不帶標號的breakbreak語句類似,只能對所在一語句類似,只能對所在一層的循環起作用。層的循環起作用。3.3.2 continue 語句語句public class continueto public class continueto public st

43、atic void main(String args) public static void main(String args) throws IOException int I,J; char ch= ; int I,J; char ch= ; for (I=1;I=1;I+ ) / for (I=1;I=1;I+ ) /外層循環外層循環 for (J=1;J=2;J+) / for (J=1;J=2;J+) /內層循環內層循環 ch=(char)System.in.read(); ch=(char)System.in.read(); if (ch=b) continue; / if (ch

44、=b) continue; /結束內層循環的本次循環結束內層循環的本次循環 System.out.println( System.out.println( 沒有結束內循環!沒有結束內循環! ); ); if (ch= if (ch=a a) continue; /) continue; /結束外層循環的本次循環結束外層循環的本次循環 System.out.println( System.out.println( 沒有結束外循環!沒有結束外循環! ); ); 例:不帶標號的例:不帶標號的continuecontinue語句語句2.2.帶標號的使用情況帶標號的使用情況 此時,此時,continue

45、continue語句跳過標號所指的循環語句所有余下語句跳過標號所指的循環語句所有余下部分語句,回到標號所指循環語句塊的條件測試部分繼續執部分語句,回到標號所指循環語句塊的條件測試部分繼續執行。行。注意標號應該定義在注意標號應該定義在外層循環語句的開始處。外層循環語句的開始處。 下面是一個使用帶標號的下面是一個使用帶標號的continuecontinue語句的例子。語句的例子。import java.io.*;class continue_A public static void main(String args) throws IOException int i,j; char ch= ; A

46、: /標號標號A, 外層循環外層循環 for (i=1;i=2;i+ ) for ( j=1;j=1;j+) /內層循環內層循環 ch = (char) System.in.read(); if (ch = a) continue A; /結束結束A對應的循環語句的本次循環對應的循環語句的本次循環 System.out.println(本次內循環正常結束!本次內循環正常結束!); System.out.println(本次外循環正常結束!本次外循環正常結束! ); n1 n2 數組是相同類型的數據元素按順序組成的一種復合數據數組是相同類型的數據元素按順序組成的一種復合數據類型,元素在數組中的相

47、對位置由下標來指明。數組中的每個類型,元素在數組中的相對位置由下標來指明。數組中的每個元素通過數組名加下標進行引用。數組作為一種特殊的數據類元素通過數組名加下標進行引用。數組作為一種特殊的數據類型具有以下特點:型具有以下特點: (1) (1) 一個數組中所有的元素應該是同一類型;一個數組中所有的元素應該是同一類型; (2) (2) 數組中的元素是有順序的;數組中的元素是有順序的; (3) (3) 數組中的一個元素通過數組名和數組下標來確定。數組中的一個元素通過數組名和數組下標來確定。數數 組組1) 1) 一維數組的說明與構造一維數組的說明與構造 與與C+C+中不同的是,中不同的是,JavaJa

48、va中數組要用中數組要用newnew操作符實例化才可使用。所以操作符實例化才可使用。所以建立一個數組需要兩步:建立一個數組需要兩步: 聲明數組聲明數組 實例化實例化 格式:格式: 類型類型 數組名數組名 ; (或(或: : 類型類型 數組名數組名;) 數組名數組名 = new = new 類型類型 數組長度數組長度 ; 說明:說明: 第一行聲明一個數組名第一行聲明一個數組名,并指明數組類型并指明數組類型(可任何類型)和維數和維數; 第二行使用第二行使用newnew操作符構造數組并初始化操作符構造數組并初始化( (缺省值缺省值) ),即為數組元素分配存,即為數組元素分配存儲空間,并為每個數組元素

49、都賦予一個初值。儲空間,并為每個數組元素都賦予一個初值。1.一維數組一維數組(可含有變量) 上面的第二步實例化可以暫時不做,到需要時再完成。也可將上面的上面的第二步實例化可以暫時不做,到需要時再完成。也可將上面的二步合并為一步:二步合并為一步: 類型類型 數組名數組名 = new = new 類型類型 數組長度數組長度 ;例:例: int list ;list ; /聲明一個整型數組聲明一個整型數組 list = new int3; /為上面聲明的數組分配為上面聲明的數組分配3 3個整數元素個整數元素 /的內存空間,并使每個元素初值為的內存空間,并使每個元素初值為0 0 合并為一步:合并為一步

50、: int list = new int3; 2) 2) 數組的初始化數組的初始化 數組初始化就是為數組元素指定初始值。通常在構造數組數組初始化就是為數組元素指定初始值。通常在構造數組時,時,JaveJave會使每個數組元素初始化為一個默認值。但在許多會使每個數組元素初始化為一個默認值。但在許多情況下,并不希望數組的初值為默認值,此時,就需要用賦情況下,并不希望數組的初值為默認值,此時,就需要用賦值語句來對數組進行初始化。值語句來對數組進行初始化。 數組的初始化方式有兩種:數組的初始化方式有兩種: 一、像初始化簡單類型一樣自動初始化數組一、像初始化簡單類型一樣自動初始化數組( (不用不用new

51、)new),即在說明數組的同時進行初始化即在說明數組的同時進行初始化( (稱為靜態初始化稱為靜態初始化) ); 二、僅用二、僅用newnew創建數組,讓它取缺省值,到以后再為元素創建數組,讓它取缺省值,到以后再為元素賦值賦值( (稱為動態初始化稱為動態初始化) )。 例:例:int a =1,2,3,4,5; /int a =1,2,3,4,5; /靜態初始化靜態初始化 int list = new int3;int list = new int3; /動態初始化動態初始化 上面的第一個語句聲明并創建了數組上面的第一個語句聲明并創建了數組a a,并且為數組每個元素賦初,并且為數組每個元素賦初值

52、,結果為:值,結果為: a0=1,a1=2,a2,=3,a3=4,a4=5a0=1,a1=2,a2,=3,a3=4,a4=5 上面的第二個語句僅聲明并創建了數組上面的第二個語句僅聲明并創建了數組a a,并未給數組賦初值,并未給數組賦初值, 由由Jave為數組元素默認初始化,于是得到三個元素并且都有初值:為數組元素默認初始化,于是得到三個元素并且都有初值: list0=0, 0=0, list1=0, 1=0, list2=02=0 注意:注意:“”中所有數據的類型必須與數組的類型相同中所有數據的類型必須與數組的類型相同 3) 3) 數組元素的使用數組元素的使用 數組被實例化后,就可以在程序中像

53、使用任何變量一樣來使用數組元數組被實例化后,就可以在程序中像使用任何變量一樣來使用數組元素,即可以在任何允許使用變量的地方使用數組元素。數組元素的標識素,即可以在任何允許使用變量的地方使用數組元素。數組元素的標識方式為:方式為: 數組名數組名 下標下標 例:例: a3a3、bibi、cici* *55 下標的取值范圍是從下標的取值范圍是從0 0開始,一直到數組的長度減開始,一直到數組的長度減1 1。對于上面例子中。對于上面例子中的的listlist數組來說,它有數組來說,它有3 3個元素,分別為:個元素,分別為: list0 list0、list1list1、list2list2(注意:不存在

54、(注意:不存在list3list3)注意:注意: 1.1.下標只能為下標只能為bytebyte、shortshort、intint或或charchar類型類型,不能為不能為longlong; 2.Java2.Java在程序編譯時并不對數組下標進行越界檢查在程序編譯時并不對數組下標進行越界檢查, ,但在運行時會對數組但在運行時會對數組下標進行越界檢查,以保證安全性。下標進行越界檢查,以保證安全性。 JavaJava中的數組實際是中的數組實際是ArrayArray類的一個對象,定義一個數組實際就是創類的一個對象,定義一個數組實際就是創建建ArrayArray類的一個對象。該類中還有一些屬性和方法供

55、數組使用。如對于類的一個對象。該類中還有一些屬性和方法供數組使用。如對于每個數組都有一個屬性:每個數組都有一個屬性:lengthlength,它指明數組的長度,它指明數組的長度( (即元素個數即元素個數) ),由程,由程序自動計算。例如,序自動計算。例如,list.lengthlist.length指明了數組指明了數組listlist的長度。的長度。 JavaJava中的數組還可利用數組名來互相賦值,但要注意,這種賦值實際中的數組還可利用數組名來互相賦值,但要注意,這種賦值實際是定義一個別名,即是同一數組的不同名字的引用。例如:是定義一個別名,即是同一數組的不同名字的引用。例如: int a=

56、2,4,6, b; b=a; System.out.println(b1); /輸出輸出4 b1=7; System.out.println(a1); /輸出輸出7 4) 4) 一維數組應用示例一維數組應用示例例例. . 編寫一個程序,在其中建立一個有編寫一個程序,在其中建立一個有1010個整數的數個整數的數組,運行后從鍵盤輸入組,運行后從鍵盤輸入1010個整數放入數組,然后輸出個整數放入數組,然后輸出其中的最大數。其中的最大數。 import java.io.*; public class Array1public static void main(String args) throws I

57、OException int i, max, a=new int10; byte buf=new byte20; String str; 程序如下:程序如下: System.out.println(請輸入請輸入10個數:個數:); for(i=0; i=9; i+) /輸入輸入10個數個數, 以回車分隔以回車分隔 System.in.read(buf); str=new String(buf); ai=Integer.parseInt(str.trim(); max=a0; for(i=1; i=9; i+) /找最大數找最大數 if(maxai) max=ai; System.out.pri

58、ntln(最大數是最大數是+max); 與與C+C+中類似,在中類似,在JavaJava中,當一維數組中的類型又是一個一維數組時,中,當一維數組中的類型又是一個一維數組時,就構成了二維數組,以此類推,可構成更高維的數組。所以,多維數組是就構成了二維數組,以此類推,可構成更高維的數組。所以,多維數組是通過對一維數組的嵌套聲明來實現的。通過對一維數組的嵌套聲明來實現的。 多維數組與一維數組一樣,需要聲明并實例化后才可使用。下面主要以多維數組與一維數組一樣,需要聲明并實例化后才可使用。下面主要以二維數組為例來說明用法。二維數組為例來說明用法。1) 1) 二維數組的說明與創建二維數組的說明與創建 二維

59、數組說明的格式為:二維數組說明的格式為: 類型類型 數組名數組名 ;( (或或 類型類型 數組名;數組名;) ) 例如:例如: intint intArray intArray ; 與一維數組一樣,此時還沒有為數組元素分配內存空間,還需要用與一維數組一樣,此時還沒有為數組元素分配內存空間,還需要用newnew關鍵字來創建數組,然后才可以使用該數組的每個元素。關鍵字來創建數組,然后才可以使用該數組的每個元素。2. 多維數組多維數組 對二維數組來說,分配內存空間有下面幾種方法。對二維數組來說,分配內存空間有下面幾種方法。 直接為每一維分配空間,如:直接為每一維分配空間,如: int a = new

60、 int23int a = new int23; 該語句創建了一個二維數組該語句創建了一個二維數組a a,其較高一維含兩個元素,每個元素為由,其較高一維含兩個元素,每個元素為由3 3個整型數構成的一維整型數組。如下所示:個整型數構成的一維整型數組。如下所示:a00 a01 a02 a10 a11 a12 從最高維開始,分別為每一維分配空間,如:從最高維開始,分別為每一維分配空間,如: b00 b01 b02 b10 b11 b12 b13 b14 int b = new int2 int b = new int2 ;/最高維含最高維含2 2個元素,每個元素,每 /個元素為一個整型數組個元素為一

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論