Javappt課件(劉壽強)第3章_第1頁
Javappt課件(劉壽強)第3章_第2頁
Javappt課件(劉壽強)第3章_第3頁
Javappt課件(劉壽強)第3章_第4頁
Javappt課件(劉壽強)第3章_第5頁
已閱讀5頁,還剩35頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、J a v a 語 言 程 序 設 計 ( 第 2 版 )3.1 3.1 條件選擇語句條件選擇語句 if if語句語句、多分支語句多分支語句switchswitch3.2 3.2 循環(huán)語句循環(huán)語句 3.2.1 while 3.2.1 while語句語句 3.2.2 do 3.2.2 dowhilewhile語句語句 3.2.3 for 3.2.3 for語句語句3.3 3.3 跳轉(zhuǎn)語句跳轉(zhuǎn)語句 break break語句語句、continuecontinue語句語句J a v a 語 言 程 序 設 計 ( 第 2 版 )3.1 if3.1 if語句語句(1 1)格式)格式1 1:無:無els

2、eelse的的if if語句語句 if ( if ( 條件表達式條件表達式 ) ) if if塊塊; ; 例如:例如: int a = 28;if( a 0) a/=10;System.out. println(a=+a);思考差異性?J a v a 語 言 程 序 設 計 ( 第 2 版 )例例3-1 3-1 從鍵盤輸入三個數(shù),輸出其中的最大者。從鍵盤輸入三個數(shù),輸出其中的最大者。 import javax.swing.*;public class Max public static void main(String args ) int a, b, c, max; String s; s

3、= JOptionPane.showInputDialog(輸入第輸入第1個整型數(shù):個整型數(shù):); a = Integer.parseInt(s); s = JOptionPane.showInputDialog(輸入第輸入第2個整型數(shù):個整型數(shù):); b = Integer.parseInt(s); s = JOptionPane.showInputDialog(輸入第輸入第3個整型數(shù):個整型數(shù):); c = Integer.parseInt(s); J a v a 語 言 程 序 設 計 ( 第 2 版 )例例3-1(3-1(續(xù))續(xù)) max=a;max=a; if (bmax) if (

4、bmax) max=b; max=b; if (cmax) if (cmax) max=c ; max=c ; JOptionPane.showMessageDialogJOptionPane.showMessageDialog(null,(null,最大值是最大值是: : +max); +max); 【思考思考】如果用如果用Math.maxMath.max方法來實現(xiàn)求方法來實現(xiàn)求3 3個個數(shù)的最大值,如何用一個表達式實現(xiàn)?數(shù)的最大值,如何用一個表達式實現(xiàn)?Math.max(a,Math.max(b,c)J a v a 語 言 程 序 設 計 ( 第 2 版 )格式格式2 2:帶:帶elsee

5、lse的的if if語句語句 if (if (條件表達式條件表達式) ) if if塊塊 else else else else塊塊 int n = 12;if(n % 2 != 0) System.out.println(n 是奇數(shù));else System.out.println(n 是偶數(shù));System.out.println(+n);J a v a 語 言 程 序 設 計 ( 第 2 版 )if if 語句的嵌套語句的嵌套 ( (求求a a、b b、c c三個數(shù)中最大數(shù)三個數(shù)中最大數(shù) ) )if (ab) if (ab) if(ac) if(ac) System.out.printl

6、n( System.out.println(三個數(shù)中最大值是三個數(shù)中最大值是: +a); : +a); else else System.out.println( System.out.println(三個數(shù)中最大值是三個數(shù)中最大值是: +c); : +c); else /a=belse /acbc) System.out.println(System.out.println(三個數(shù)中最大值是三個數(shù)中最大值是: +b); : +b); else else System.out.println( System.out.println(三個數(shù)中最大值是三個數(shù)中最大值是: +c); : +c); J

7、 a v a 語 言 程 序 設 計 ( 第 2 版 )最近匹配原則最近匹配原則 if (x6) if (x3) if (x3) System.out.println(3x6); System.out.println(3x=6); System.out.println(x=6); else與最近的if匹配J a v a 語 言 程 序 設 計 ( 第 2 版 )讓讓elseelse語句匹配前一個語句匹配前一個if ifif (x6)if (x3) if (x3) System.out.println(3x6); System.out.println(3x=6); System.out.prin

8、tln(x=6); J a v a 語 言 程 序 設 計 ( 第 2 版 )思考運行結果?思考運行結果?public class test public class test public static void main(String args) public static void main(String args) int x=1,y=1,z=1; int x=1,y=1,z=1; if (-x=0 & y+=1|z+=1) if (-x=0 & y+=1|z+=1) System.out.println(x=+x+,y=+y+,z=+z); System.out.pr

9、intln(x=+x+,y=+y+,z=+z); x=0,y=2,z=1x=0,y=2,z=1J a v a 語 言 程 序 設 計 ( 第 2 版 )程序段對應的運行結果程序段對應的運行結果int i = 10int i = 10,j = 10;j = 10;boolean b = false;boolean b = false;if ( b = i = j)if ( b = i = j) System.out.println(True); System.out.println(True);elseelse System.out.println(False); System.out.prin

10、tln(False);變量b的值為賦值表達式的結果TrueJ a v a 語 言 程 序 設 計 ( 第 2 版 ) 階梯階梯else ifelse if 例例3-2,3-2,輸入成績,根據(jù)分數(shù)段輸出信息輸入成績,根據(jù)分數(shù)段輸出信息public class Ex3_2 public class Ex3_2 public static void main(String public static void main(String argsargs) ) intint s= s= Integer.parseIntInteger.parseInt( (argsargs0); 0); if (s60)

11、 if (s60) System.out.printlnSystem.out.println( (不及格不及格); ); else if (s70) else if (s70) System.out.printlnSystem.out.println( (及格及格); ); else if (s80) else if (s80) System.out.printlnSystem.out.println( (中中); ); else if (s90) else if (s90) System.out.printlnSystem.out.println( (良良); ); else else Sy

12、stem.out.printlnSystem.out.println(“ (“優(yōu)優(yōu)”); /90”); /90分以上分以上 J a v a 語 言 程 序 設 計 ( 第 2 版 )3.1.2 3.1.2 多分支語句多分支語句switch switch switch (expression) switch (expression) case value1 : statement1; break; /case value1 : statement1; break; /分支分支1 1 case value2 : statement2; break; /case value2 : statement

13、2; break; /分支分支2 2 . . case valueN : statementN; break; /case valueN : statementN; break; /分支分支n n default : default : 缺省語句塊缺省語句塊; /; /分支分支n+1,n+1, 其它其它 J a v a 語 言 程 序 設 計 ( 第 2 版 )圖 3-3 switch語句執(zhí)行流程J a v a 語 言 程 序 設 計 ( 第 2 版 )【幾點說明幾點說明】 表達式的值只能是表達式的值只能是整型、字符型、字符串整型、字符型、字符串,同時要與,同時要與casecase分支的判斷值

14、的類型一致。分支的判斷值的類型一致。casecase子句中的值子句中的值valueNvalueN必須是必須是常量常量,各個,各個casecase子句中的值不同。子句中的值不同。 計算表達式值后,首先與第一個計算表達式值后,首先與第一個casecase分支進行比較,若相同分支進行比較,若相同,執(zhí)行第一個,執(zhí)行第一個casecase分支的語句塊;否則再檢查第二個分之分支的語句塊;否則再檢查第二個分之, ,依次類推。如果沒有情況匹配,就執(zhí)行依次類推。如果沒有情況匹配,就執(zhí)行defaultdefault指定的指定的語句語句, ,但但defaultdefault子句本身是可選的。子句本身是可選的。 br

15、eakbreak語句語句用來在執(zhí)行完一個用來在執(zhí)行完一個casecase分支后,使程序跳出分支后,使程序跳出switchswitch語句,即終止語句,即終止switchswitch語句的執(zhí)行,否則,找到一個匹語句的執(zhí)行,否則,找到一個匹配的情況后面所有的語句都會被執(zhí)行。配的情況后面所有的語句都會被執(zhí)行。J a v a 語 言 程 序 設 計 ( 第 2 版 )import import javax.swingjavax.swing. .* *; ;public class Scorepublic class Score public static void main(String public

16、 static void main(String argsargs)intint s= s=Integer.parseIntInteger.parseInt( (JOptionPane.showInputDialogJOptionPane.showInputDialog( (輸入學生輸入學生分數(shù):分數(shù):););intint x = s/10 x = s/10 ; ; switch (x) switch (x) case 0: case 1: case 2: case 3: case 4:case 0: case 1: case 2: case 3: case 4:case 5: case 5:

17、 System.out.printlnSystem.out.println( (不及格不及格);break;);break; case 6: case 6: System.out.printlnSystem.out.println( (及格及格);break;);break;case 7: case 7: System.out.printlnSystem.out.println( (中中);break;);break;case 8: case 8: System.out.printlnSystem.out.println( (良良);break;);break;case 9: case 10:

18、 case 9: case 10: System.out.printlnSystem.out.println( (優(yōu)優(yōu));); 例3-2也可采用switch語句實現(xiàn)分數(shù)段轉(zhuǎn)化為整數(shù)值J a v a 語 言 程 序 設 計 ( 第 2 版 )3.2.1 while3.2.1 while語句語句 whilewhile語句的一般形式是:語句的一般形式是: 特點:先判斷后執(zhí)行特點:先判斷后執(zhí)行while (while (條件表達式條件表達式) ) 循環(huán)體循環(huán)體 符合條件則執(zhí)行循環(huán)體J a v a 語 言 程 序 設 計 ( 第 2 版 )求:求:1+3+5+7+10011+3+5+7+1001clas

19、s Test class Test public static void main(String public static void main(String argsargs) intint k=1; / k=1; /累加項累加項 long s=0; / long s=0; /記錄累加和記錄累加和 while(k=1001) while(k=1001) s= s=s+ks+k; ; k=k+2; k=k+2; System.out.printlnSystem.out.println(s);(s); 0S1 4 9一直一直循環(huán)到循環(huán)到k=1003k=1003, ,出循環(huán)出循環(huán)思考:如果思考:如

20、果s s初值為初值為1 1(第(第1 1項),程序如何改動?項),程序如何改動?J a v a 語 言 程 序 設 計 ( 第 2 版 )例例3-3 3-3 在三位數(shù)中找出所有水仙花數(shù),水仙花數(shù)的條件在三位數(shù)中找出所有水仙花數(shù),水仙花數(shù)的條件是該數(shù)等于其各位數(shù)字的立方和。是該數(shù)等于其各位數(shù)字的立方和。 public class Narcissus public class Narcissus public static void main(String arge) public static void main(String arge) int i, j, k, int i, j, k, n=

21、100n=100, m=1; , m=1; while ( while (n1000n0) while(a0) m += m += a%10a%10; /; /累加計算各位數(shù)字累加計算各位數(shù)字 a =a = a/10 a/10; ; System.out.print(n+ System.out.print(n+的各位數(shù)字之和的各位數(shù)字之和=+m); =+m); J a v a 語 言 程 序 設 計 ( 第 2 版 )程序段對應的運行結果程序段對應的運行結果int m=8,n=5;int m=8,n=5;while (m2) while (m2) if (mn) m = m-n;else n

22、= n-m; System.out.println(m+, +n);System.out.println(m+, +n);過程:(0) 循環(huán)前 m=8,n=5(1)第1輪后,m=3,n=5(2)第2輪后,m=3,n=2(3)第3輪后,m=1,n=2結束循環(huán)1,2J a v a 語 言 程 序 設 計 ( 第 2 版 )程序段對應的運行結果程序段對應的運行結果int x=23659;int x=23659;String m=result=;String m=result=;while (x0) while (x0) m = m + x%10; m = m + x%10; x = x/10; x

23、= x/10; System.out.println(m);System.out.println(m);過程(0) m=“result=”,x=23659開始循環(huán)(1) m=“result=9”,x=2365(2) m=“result=95”,x=236(3) m=“result=956”,x=23(4) m=“result=9563”,x=2(5) m=“result=95632”,x=0結束循環(huán)result=95632J a v a 語 言 程 序 設 計 ( 第 2 版 )3.2.2 3.2.2 do.while do.while語句語句 格式如下:格式如下: 特點:特點:“先執(zhí)行,后判

24、斷先執(zhí)行,后判斷” do do 循環(huán)體循環(huán)體 while ( while (條件表達式條件表達式); ); 先執(zhí)行循環(huán)先執(zhí)行循環(huán)1 1遍遍符合條件循環(huán)繼續(xù)執(zhí)行,符合條件循環(huán)繼續(xù)執(zhí)行,否則結束循環(huán)否則結束循環(huán)J a v a 語 言 程 序 設 計 ( 第 2 版 )3.2.3 for3.2.3 for語句語句 格式如下: for (for (控制變量設定控制變量設定初值初值; 循環(huán)進行循環(huán)進行條件條件;迭代迭代部分部分) ) 循環(huán)體循環(huán)體 迭代部分通常要更新循環(huán)控制變量的值J a v a 語 言 程 序 設 計 ( 第 2 版 )寫出程序執(zhí)行結果寫出程序執(zhí)行結果public class publ

25、ic class Test3Test3 public static void main(String public static void main(String argsargs) ) int f=1; for (int k=2;k0; a = a/10) m += a%10; /累加計算各位數(shù)字System.out.print(n+的各位數(shù)字之和=+m);說明:J a v a 語 言 程 序 設 計 ( 第 2 版 )(2 2)在初始化部分和迭代部分可以使用逗號語句,來進行多)在初始化部分和迭代部分可以使用逗號語句,來進行多個操作。所謂逗號語句是用逗號分隔的語句序列。例如:個操作。所謂逗號

26、語句是用逗號分隔的語句序列。例如:for( i=0, j=10;for( i=0, j=10; ij; ij; i+, j-) i+, j-) System.out.printlnSystem.out.println(i+,(i+, +j);+j); 0,101,92,83,74,6J a v a 語 言 程 序 設 計 ( 第 2 版 )例例3-5 3-5 求求1+1/2+1/3+1/4+1+1/2+1/3+1/4+1/100+1/100的值的值 public class public class Ex3_5 Ex3_5 public static void main(String args

27、) public static void main(String args) double sum=1; double sum=1; for (int k= for (int k=2 2; k=100; k+); k=100; k+) sum = sum+ sum = sum+ 1.01.0/k; /k; System.out.println(1+1/2+1/3+1/4 System.out.println(1+1/2+1/3+1/4 + +1/100= +sum);+1/100= +sum); 用1/k可以嗎?J a v a 語 言 程 序 設 計 ( 第 2 版 )例例3-6 3-6 求求

28、FibonacciFibonacci數(shù)列的前數(shù)列的前1010個數(shù)。個數(shù)。public class Ex3_6 public class Ex3_6 public static void main(String args) public static void main(String args) int n0 = 0, n1 = 1, n2; int n0 = 0, n1 = 1, n2; System.out.print(n0 + + n1 + ); System.out.print(n0 + + n1 + ); for(int i = 0; i 8; i+) for(int i = 0; i

29、 8; i+) n2 = n1 + n0; / n2 = n1 + n0; /計算計算 System.out.print(n2 + ” ); System.out.print(n2 + ” ); n0 = n1; / n0 = n1; /遞推遞推 n1 = n2; n1 = n2; 0 1 1 2 3 5 8 13 21 34 n0 n1 n2J a v a 語 言 程 序 設 計 ( 第 2 版 )例例3-7 3-7 利用隨機函數(shù)產(chǎn)生利用隨機函數(shù)產(chǎn)生1010道道2 2位數(shù)的加法測試。位數(shù)的加法測試。import javax.swing.import javax.swing.* *; ;pub

30、lic class public class Ex3_7 Ex3_7 public static void main(String args) public static void main(String args) int score = 0; int score = 0; for (int i=0;i10;i+) for (int i=0;i10;i+) int a = int a = 10 + (int)(9010 + (int)(90* *Math.random(); Math.random(); int b = 10 + (int)(90 int b = 10 + (int)(90*

31、 *Math.random();Math.random(); String s=JOptionPane.showInputDialog(a+b+=? ); String s=JOptionPane.showInputDialog(a+b+=? ); int ans = Integer.parseInt(s); int ans = Integer.parseInt(s); if (a + b = ans)if (a + b = ans) score = score + 10 ; / score = score + 10 ; /每道題每道題1010分分 JOptionPane.showMessag

32、eDialog(null, your score= +score); JOptionPane.showMessageDialog(null, your score= +score); J a v a 語 言 程 序 設 計 ( 第 2 版 )4.4. 循環(huán)嵌套循環(huán)嵌套 與條件語句的嵌套類似,循環(huán)也可以嵌套。三種循環(huán)語與條件語句的嵌套類似,循環(huán)也可以嵌套。三種循環(huán)語句可以自身嵌套,也可以相互嵌套。嵌套將循環(huán)分為內(nèi)外句可以自身嵌套,也可以相互嵌套。嵌套將循環(huán)分為內(nèi)外兩層,兩層,外層循環(huán)每循環(huán)一次,內(nèi)循環(huán)要執(zhí)行一圈外層循環(huán)每循環(huán)一次,內(nèi)循環(huán)要執(zhí)行一圈 。輸出輸出9x99x9的乘法表的乘法表1 1*

33、*1=1 11=1 1* *2=2 12=2 1* *3=3 3=3 2 2* *1=2 21=2 2* *2=4 22=4 2* *3=6 3=6 . . 9 9* *1=9 91=9 9* *2=18 92=18 9* *3=27 3=27 for (for (intint i i= =1;i1;i=9;i9;i+) +) for (for (intint j= j=1;j1;j=9;j9;j+)+) System.out.printSystem.out.print(i+(i+ * * +j+j+ = = +i+i* *j+j+ tt ); ); System.out.printlnSys

34、tem.out.println();(); J a v a 語 言 程 序 設 計 ( 第 2 版 )例例3-8 :3-8 :找找3-503-50之間的素數(shù)之間的素數(shù) for (int n=3;n=50;n+) for (int n=3;n=50;n+) / /外循環(huán)外循環(huán) boolean f=true; int k=2; boolean f=true; int k=2; while (f& k=(n-1)while (f& k=(n-1) / /內(nèi)循環(huán)內(nèi)循環(huán), ,從從2 2(n-1)(n-1)去除去除n n if (n % k=0) if (n % k=0) f=false;

35、 / f=false; /發(fā)現(xiàn)有一個數(shù)能除盡發(fā)現(xiàn)有一個數(shù)能除盡n n就不是素數(shù)就不是素數(shù) k+;k+; if (f) if (f) System.out.print(t+n); System.out.print(t+n); m+; / m+; /統(tǒng)計找到的素數(shù)個數(shù)統(tǒng)計找到的素數(shù)個數(shù) if (m%5=0) if (m%5=0) System.out.println(); System.out.println(); J a v a 語 言 程 序 設 計 ( 第 2 版 )寫出運行結果寫出運行結果public class Test5public class Test5 public static

36、void main(String args) public static void main(String args) for(int i=1;i3;i+) for(int i=1;i3;i+) for (int j=0;j2;j+) for (int j=0;j2;j+) System.out.print(t+(i+j); System.out.print(t+(i+j); System.out.println(); System.out.println(); 1 2 2 3J a v a 語 言 程 序 設 計 ( 第 2 版 )1. break1. break語句語句 兩種使用形式:兩種

37、使用形式: break break 不帶標號不帶標號, ,從從breakbreak直接所處的循環(huán)體中跳轉(zhuǎn)出來。直接所處的循環(huán)體中跳轉(zhuǎn)出來。 break break 標號名標號名 帶標號帶標號, , 跳出標號所指的代碼塊,執(zhí)行塊后的下一條語句。跳出標號所指的代碼塊,執(zhí)行塊后的下一條語句。 3.3 跳轉(zhuǎn)語句跳轉(zhuǎn)語句反復做真累,該逃出哪層循環(huán)?J a v a 語 言 程 序 設 計 ( 第 2 版 )例例3-9 3-9 四位同學中一位做了好事,班主任問這四位是誰做的四位同學中一位做了好事,班主任問這四位是誰做的好事。好事。A A說說“不是我不是我”;B B說說“是是C C”。C C說說“是是D D”

38、;D D說說“C C胡說胡說”。已知有。已知有3 3人說真話人說真話. .public class Goodpublic class Good public static void main(String args) public static void main(String args) int man; /1-A,2-B,3-C,4-D int man; /1-A,2-B,3-C,4-D for (man=1;man=4;man+) for (man=1;man=4;man+) int a=(man!=1)?1:0;int a=(man!=1)?1:0; int b=(man=3)?1:0; int b=(man=3)?1:0; int c=(man=4)?1:0; int c=(man=4)?1:0; int d=(man!=4)?1:0;int d=(man!=4)?1:0; if (a+b+c+d=3) if (a+b+c+d=3) break; /manbreak; /man為當前值時為當前值時, ,有有3 3位所說是真位所說是真 滿足條件退出循環(huán)每人說的每人說的話用程序話用程序邏輯表達邏輯表達J a v a 語 言 程 序 設 計 ( 第 2 版 ) switch (man) switch (man) case 1: case 1: System.out.print

溫馨提示

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

最新文檔

評論

0/150

提交評論