国产AV88|国产乱妇无码在线观看|国产影院精品在线观看十分钟福利|免费看橹橹网站

23598 Java程序設計基礎

發(fā)布時間:2022-8-31 | 雜志分類:其他
免費制作
更多內(nèi)容

23598 Java程序設計基礎

41第 3 章 Java 控制語句{char c2//c2 的作用域只在塊內(nèi),到塊外便失去作用}}注意,Java 不允許在兩個嵌套的塊內(nèi)聲明兩個完全同名的變量。例如,下面的代碼在編譯時是通不過的。public static void main(String[] args){char c1;{char c2char c1//c1 在外層已經(jīng)定義過了,不可以在內(nèi)層再定義,程序將出錯}}塊還應用在流程控制的語句中,如 if 語句、switch 語句及循環(huán)語句中。3.2 選擇結構語句選擇結構也稱分支結構,它提供了這樣一種控制機制:根據(jù)條件值或表達式值的不同選擇執(zhí)行不同的語句序列,其他與條件值或表達式值不匹配的語句序列則被跳過不執(zhí)行。選擇結構的語句又分為 if 語句和 switch 語句。3.2.1 if 語句if 語句根據(jù)判斷條件的多少又分為單分支 if 語句、雙分支 if 語句和多分支 if 語句。1.單分支 if 語句格式如下:if(條件)語句;或者if(條件){語句塊;}第一種情況下,在條件為真時,執(zhí)行一條語句;否則跳過語句執(zhí)行下面的語句。第二種情況下,在條件為真時,執(zhí)行多條語句組成的語... [收起]
[展開]
23598 Java程序設計基礎
粉絲: {{bookData.followerCount}}
文本內(nèi)容
第51頁

41

第 3 章 Java 控制語句

{

char c2

//c2 的作用域只在塊內(nèi),到塊外便失去作用

}

}

注意,Java 不允許在兩個嵌套的塊內(nèi)聲明兩個完全同名的變量。例如,下面的代碼在編譯

時是通不過的。

public static void main(String[] args){

char c1;

{

char c2

char c1

//c1 在外層已經(jīng)定義過了,不可以在內(nèi)層再定義,程序將出錯

}

}

塊還應用在流程控制的語句中,如 if 語句、switch 語句及循環(huán)語句中。

3.2 選擇結構語句

選擇結構也稱分支結構,它提供了這樣一種控制機制:根據(jù)條件值或表達式值的不同選擇

執(zhí)行不同的語句序列,其他與條件值或表達式值不匹配的語句序列則被跳過不執(zhí)行。選擇結構

的語句又分為 if 語句和 switch 語句。

3.2.1 if 語句

if 語句根據(jù)判斷條件的多少又分為單分支 if 語句、雙分支 if 語句和多分支 if 語句。

1.單分支 if 語句

格式如下:

if(條件)

語句;

或者

if(條件)

{

語句塊;

}

第一種情況下,在條件為真時,執(zhí)行一條語句;否則跳過語

句執(zhí)行下面的語句。

第二種情況下,在條件為真時,執(zhí)行多條語句組成的語句塊;

否則跳過語句執(zhí)行下面的語句。

上述格式中的“條件”為一關系表達式或布爾邏輯表達式,其

值為一布爾值(true 或 false)。單分支 if 語句的流程如圖 3-1 所示。 圖 3-1 單分支 if 語句的流程

第52頁

42

Java 程序設計基礎

【例 3.1】判斷某個人是否是未成年人。

public class Monday {

public static void main(String[] args) {

int age=15;

if(age<18)

System.out.println(age+" 是未成年人");

if(age>=18)

System.out.println(age+" 是成年人");

}

}

運行結果如圖 3-2 所示。

圖 3-2 例 3.1 的運行結果

【附加案例】判斷成績是否及格。

代碼如下:

public class TestIf {

public static void main(String[] args) {

int score=50;

if(score>=60)

System.out.println(score+" 及格");

if(score<60)

System.out.println(score+" 不及格");

}

}

運行結果如圖 3-3 所示。

圖 3-3 附加案例的運行結果

第53頁

43

第 3 章 Java 控制語句

2.雙分支 if 語句

格式如下:

if(條件)

{

語句塊 1;

}

else

{

語句塊 2;

}

當條件為真時,執(zhí)行語句塊 1,然后跳過 else 和

語句塊 2 執(zhí)行后面的語句;當條件為假時,跳過語句

體 1,執(zhí)行語句塊 2;然后繼續(xù)執(zhí)行后面的語句。注

意,else 子句不能單獨作為語句使用,必須和 if 語句

配對使用。雙分支 if 語句的流程如圖 3-4 所示。

【例 3.2】判斷某個人是否是未成年人。

public class Monday {

public static void main(String[] args) {

int age=19;

if(age<18)

System.out.println(age+" 是未成年人");

else

System.out.println(age+" 是成年人");

}

}

運行結果:

19 是成年人

【附加案例】判斷輸入的年份是否是閏年。

import javax.swing.JOptionPane;

public class TestIfElse {

public static void main(String[] args) {

int year;

// 提示用戶輸入年數(shù)

String numOfYearsString=JOptionPane.showInputDialog(null,

"請輸入年份:");

//將 String 轉換為 int

year=Integer.parseInt(numOfYearsString);

if(year%4==0&&year%100!=0||year%400==0){

JOptionPane.showMessageDialog(null,year+"是閏年");

}else{

JOptionPane.showMessageDialog(null,year+"不是閏年");

}

}

}

圖 3-4 雙分支 if 語句的流程

第54頁

44

Java 程序設計基礎

測試運行結果如圖 3-5 所示。

(a)輸入數(shù)字 2007 的結果 (b)輸入數(shù)字 2016 的結果

圖 3-5 附加案例的運行結果

代碼分析:

import javax.swing.JOptionPane;導入一個新的類 JOptionPane,它是圖形界面的提示框。

① 屬于 javax.swing 包。

② 功能:定制 4 種不同種類的標準對話框。

ConfirmDialog:確認對話框。提出問題,然后由用戶自己來確認(單擊 Yes 或 No 按鈕)。

InputDialog:提示輸入文本。

MessageDialog:顯示信息。

OptionDialog:組合其他三個對話框類型。

③ 這 4 個對話框可以采用 show×××Dialog()來顯示。例如:

showConfirmDialog():顯示確認對話框。

showInputDialog():顯示輸入文本對話框。

showMessageDialog():顯示信息對話框。

showOptionDialog():顯示選擇性的對話框。

④ 參數(shù)說明。

ParentComponent:指示對話框的父窗口對象,一般為當前窗口。也可以為 null,即采用默

認的 Frame 作為父窗口,此時對話框將設置在屏幕的正中。

message:指示要在對話框內(nèi)顯示的描述性文字。

String title:標題條文字串。

Component:在對話框內(nèi)要顯示的組件(如按鈕)。

Icon:在對話框內(nèi)要顯示的圖標。

messageType ( 圖 標 ) : ERROR_MESSAGE 、 INFORMATION_MESSAGE 、 WARNING_

MESSAGE、QUESTION_MESSAGE、PLAIN_MESSAGE。

optionType : 對 話 框 底 部 顯 示 的 按 鈕 選 項 。 DEFAULT_OPTION 、 YES_NO_OPTION 、

YES_NO_CANCEL_OPTION、OK_CANCEL_OPTION。

第55頁

45

第 3 章 Java 控制語句

3.多分支 if 語句

格式如下:

if(條件 1)

{

語句塊 1;

}

else if(條件 2)

{

語句塊 2;

}

...

else if(條件 n)

{

語句塊 n;

}

[else

{

語句塊 n+1;

}]

當條件 1 為真時,執(zhí)行語句塊 1,否則如果條件 2 的值為 true 則執(zhí)行語句塊 2……如果前

面 n 個條件都不成立,則執(zhí)行語句塊 n+1,其中 else 部分是可選的。注意,else 總是與從前面

代碼開始,離它最近且未匹配的 if 語句匹配使用。多分支 if 語句的流程如圖 3-6 所示。

圖 3-6 多分支 if 語句的流程

第56頁

46

Java 程序設計基礎

【例 3.3】判斷成績是否及格。

public class Score {

public static void main(String[] args) {

int score=67;

if(score>=90)

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

else if(score>=80)

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

else if(score>=70)

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

else if(score>=60)

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

else

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

}

}

運行結果:

及格

【附加案例】設銀行存期有一年、兩年、三年、五年,年利率分別為 2.25、2.7、3.24、3.6,

現(xiàn)存入銀行 10 000 元,到期取款,求銀行應支付的本息分別為多少。(利息=本金×年利率×存

期,本息=本金+利息)

import java.util.Scanner;

public class Bank{

public static void main(String[] args) {

double increase[]={ 0.0225,0.027,0.0324,0,0.036 };

double money,interest;

int years;

Scanner scan=new Scanner(System.in);

System.out.print("請輸入要存入的金額:");

money=scan.nextDouble();

System.out.print("請輸入要存的年限:");

years=scan.nextInt();

interest=money*increase[years-1]*years;

money+=interest;

System.out.println("利息:"+interest);

System.out.println("本息:"+money);

}

}

運行結果如圖 3-7 所示。

圖 3-7 附加案例的運行結果

第57頁

47

第 3 章 Java 控制語句

代碼分析:

在 Eclipse 中編寫程序時,如果變量是需要手動輸入的,就可以用到 Scanner 類。Scanner

類是一個用于掃描輸入文本的實用程序。由于任何數(shù)據(jù)都必須通過同一模式的捕獲組檢索或通

過使用一個索引來檢索文本的各個部分,于是可以結合使用正則表達式和從輸入流中檢索特定

類型數(shù)據(jù)項的方法。這樣,除了能使用正則表達式之外,Scanner 類還可以任意地對字符串和基

本類型(如 int 和 double)的數(shù)據(jù)進行分析。借助于 Scanner 類,可以針對任何要處理的文本內(nèi)

容編寫自定義的語法分析器。

代碼 Scanner scan = new Scanner(System.in);定義 Scanner 對象,參數(shù)是標準輸入流。System.out

是標準的輸出流。

注意:在 Eclipse 中一定要在開始時在 package 下面導入 java.util.Scanner,不然 Scanner 便

不能調(diào)用。

常用的輸入不同數(shù)據(jù)類型的方法:

輸入字節(jié)類型:nextByte()。

輸入短整型:nextShort()。

輸入整型:nextInt()。

輸入長整型:nextLong()。

輸入單精度浮點型:nextFloat()。

輸入雙精度浮點型:nextDouble()。

輸入一行字符串:nextLine()。

3.2.2 switch 語句

處理多個分支問題時,使用多分支 if 語句顯得非常煩瑣,Java 提供了一種多分支結構的

switch 語句。switch 語句根據(jù)表達式的值從多分支中選擇一個來執(zhí)行。它的格式如下:

switch(表達式)

{

case 常量 1:

語句體 1;

break;

case 常量 2:

語句體 2;

break;

case 常量 n:

語句體 n;

break;

[default:

語句體 n+1;

break;]

}

}

第58頁

48

Java 程序設計基礎

其中,表達式的類型只能是 int、byte、short、char。多分支結構把表達式的值依次與每個 case

子句中的值相比較, 如果遇到匹配的值,則執(zhí)行該 case 子句的語句序列。

case 子句只是起到一個標號的作用,用來査找匹配的入口,并從此處開始執(zhí)行。case 子句

中的值必須是常量,而且所有 case 子句中的值應該是不同的。

default 子句可任選。當表達式的值與任一 case 子句中的值都不匹配時,程序執(zhí)行 default

后面的語句;如果表達式的值與任一 case 子句中的值都不匹配,且沒有 default 子句,則程序不

作任何操作,而是直接跳出 switch 語句。

break 語句用來在執(zhí)行完成一個 case 分支后,使程序跳出 switch 語句,即終止 switch 語句

的執(zhí)行。如果沒有 break 語句,當程序執(zhí)行完匹配的 case 語句序列后,還會繼續(xù)執(zhí)行后面的 case

語句序列。因此,一般應該在每個 case 分支后,用 break 語句終止后面的分支語句序列的執(zhí)行。

在某些特殊情況下,當多個相鄰的 case 分支執(zhí)行一組相同的操作時,為了簡化程序的編寫,相

同的程序段只須出現(xiàn)在最后一個 case 分支中;即只在這組分支的最后一個 case 后加 break 語

句,組中其他的 case 分支則不使用 break 語句。

case 分支中若包含多條語句,可以不用花括號{}括起,switch 語句的流程如圖 3-8 所示。

圖 3-8 switch 語句的流程

【例 3.4】判斷數(shù)字 1~7,分別輸出對應的星期(1~7 對應星期一~星期天)。

public class Week {

public static void main(String[] args) {

int i=7;

switch (i) {

case 1:

System.out.println("今天是星期一");

break;

第59頁

49

第 3 章 Java 控制語句

case 2:

System.out.println("今天是星期二");

break;

case 3:

System.out.println("今天是星期三");

break;

case 4:

System.out.println("今天是星期四");

break;

case 5:

System.out.println("今天是星期五");

break;

case 6:

System.out.println("今天是星期六");

break;

default:

System.out.println("今天是星期天");

break;

}

}

}

運行結果如圖 3-9 所示。

圖 3-9 例 3.4 的運行結果

【附加案例】根據(jù)如下代碼和運行結果分析 switch 語句。

代碼如下:

public class TestSwitchBreak {

public static void main(String[] args) {

int i=5;

switch (i) {

case 1:

System.out.println("one");

第60頁

50

Java 程序設計基礎

case 10:

System.out.println("ten");

case 5:

System.out.println("five");

case 3:

System.out.println("three");

default:

System.out.println("other");

}

}

}

運行結果如圖 3-10 所示。

圖 3-10 附加案例的運行結果

說明:

當 switch 結構中沒有 break 語句時,產(chǎn)生的這種結果稱為穿透。

3.2.3 選擇結構語句的嵌套

上述各種條件結構的語句中,根據(jù)實際需要,在每一個條件結構中都可以嵌入另外的條件

結構,使用時要特別注意 if 和 else 的搭配。if 語句的嵌套格式如下:

if(條件 1)

if(條件 2)

語句體 1;

else

語句體 2;

else

if(條件 3)

語句體 3;

else

語句體 4;

第61頁

51

第 3 章 Java 控制語句

if 嵌套結構的流程如圖 3-11 所示。

圖 3-11 if 嵌套結構的流程

【例 3.5】求三個數(shù)當中的最大值。

public class GetMax {

public static void main(String[] args) {

int a=10;

int b=50;

int c=21;

int max;

if(a>b)

if(a>c)

max=a;

else

max=c;

else

if(b>c)

max=b;

else

max=c;

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

}

}

運行結果如圖 3-12 所示。

第62頁

52

Java 程序設計基礎

圖 3-12 例 3.5 的運行結果

【附加案例】學生畢業(yè)的兩個條件為考試成績和考勤成績都大于 60 分。

代碼如下:

public class Graduation {

public static void main(String[] args) {

int score=65;

//考試成績

int daily=70;

//考勤成績

if(score>60&&daily>60){

System.out.println("正常畢業(yè)");

}else{

if(score<60&&daily<60){

System.out.println("考試成績和考勤成績都不合格,不能畢業(yè)");

}else if(daily<60){

System.out.println("考勤成績不合格,無法畢業(yè)");

}else{

System.out.println("考試成績都不合格,不能畢業(yè)");

}

}

}

}

運行結果如圖 3-13 所示。

圖 3-13 附加案例的運行結果

第63頁

53

第 3 章 Java 控制語句

3.3 循環(huán)結構語句

在程序設計中,有時需要反復執(zhí)行一段相同的代碼,直到滿足一定的條件為止。Java 中利

用循環(huán)結構來實現(xiàn)這種流程的控制。Java 提供了三種循環(huán)語句:for 語句、while 語句和 do 語

句。一個循環(huán)結構一般應包含 4 部分內(nèi)容。

① 初始化部分:用來設置循環(huán)控制的一些初始條件。

② 循環(huán)體部分:這是反復執(zhí)行的一段代碼,可以是單一的一條語句,也可以是復合語句。

③ 迭代部分:用來修改循環(huán)控制條件。

④ 判斷部分:也稱終止部分,是一個關系表達式或布爾邏輯表達式,其值用來判斷是否

滿足循環(huán)終止條件,每執(zhí)行一次循環(huán)都要對該表達式求值。

3.3.1 while 循環(huán)語句

當不知道一個循環(huán)會被重復執(zhí)行多少次時,可以選擇

不確定循環(huán)結構:while 循環(huán)。while 循環(huán)又稱“當型”循

環(huán),while 循環(huán)結構的流程如圖 3-14 所示。

它的一般格式為:

[初始化語句]

while(條件表達式)

{

循環(huán)體;

[迭代語句;]

}

說明:

① 初始化控制條件這部分是任選的,

② 當條件表達式的值為 true 時,循環(huán)執(zhí)行花括號中

的語句,其中迭代部分是任選的;若某次判斷條件表達式

的值為 false,則結束循環(huán)的執(zhí)行。

③ while 循環(huán)首先計算終止條件,當條件滿足時,才

去執(zhí)行循環(huán)體中的語句;若首次計算條件就不滿足,則循環(huán)體部分一次也不會被執(zhí)行。這是“當

型”循環(huán)的特點。

④ while 循環(huán)一般用于循環(huán)次數(shù)不確定的情況,但也可以用于循環(huán)次數(shù)確定的情況。

【例 3.6】用 while 循環(huán)求 1~100 之間所有偶數(shù)的和。

public class WhileProduct {

public static void main(String[] args) {

int sum=0;

int i=1;

while(i<=100) {

if(i%2==0)

sum+=i;

i++;

}

圖 3-14 while 循環(huán)結構的流程

第64頁

54

Java 程序設計基礎

System.out.println("1 到 100 之間所有偶數(shù)的和:"+sum);

}

}

運行結果如圖 3-15 所示。

圖 3-15 例 3.6 的運行結果

【附加案例】用 while 循環(huán)輸出 1~100 之間所有能被 10 整除

的數(shù)。

代碼如下:

public class Prime {

public static void main(String[] args) {

int i=1;

while(i<=100) {

if(i%10==0)

System.out.println(i);

i++;

}

}

}

運行結果如圖 3-16 所示。

3.3.2 do...while 循環(huán)語句

do...while 循環(huán)又稱“直到型”循環(huán)。它的一般格式為:

[初始化語句]

do{

循環(huán)體;

[迭代語句;]

}while(條件表達式);

說明:

① do...while 結構首先執(zhí)行循環(huán)體,然后計算終止條件。若結果為 true,則循環(huán)執(zhí)行花括號

中的循環(huán)體,直到布爾表達式的結果為 false。

② 與 while 結構不同,do...while 結構的循環(huán)體至少被執(zhí)行一次,這是“直到型”循環(huán)的特點。

do...while 循環(huán)語句的流程如圖 3-17 所示。

【例 3.7】用 do...while 循環(huán)求 1~100 之間所有偶數(shù)的和。

public class DoWhileProduct {

public static void main(String[] args) {

圖 3-16 附加案例的運行結果

第65頁

55

第 3 章 Java 控制語句

int sum=0;

int i=1;

do{

if(i%2==0)

sum+=i;

i++;

}while(i<=100);

System.out.println("1 到 100 之間所有偶數(shù)的和:"+sum);

}

}

運行結果如圖 3-18 所示。

圖 3-17 do...while 循環(huán)語句的流程 圖 3-18 例 3.7 的運行結果

【附加案例】用 do...while 循環(huán)輸出 1~100 之間所有能被 10 整除的數(shù)。

代碼如下:

public class Prime {

public static void main(String[] args) {

int i=1;

do{

if(i%10==0)

System.out.println(i);

i++;

}while(i<=100)

}

}

運行結果如圖 3-19 所示。

while 循環(huán)與 do...while 循環(huán)最大的區(qū)別就在于:while 先判斷條件再循環(huán),循環(huán)體可以一次

也不執(zhí)行;do...while 先循環(huán)再判斷條件,循環(huán)體至少執(zhí)行一次。

第66頁

56

Java 程序設計基礎

圖 3-19 附加案例的運行結果

3.3.3 for 循環(huán)語句

如果事先知道循環(huán)會被重復執(zhí)行多少次,可以選擇 Java 提供的確定循環(huán)結構 for 循環(huán)。for

循環(huán)語句的一般格式為:

for(初始化語句;循環(huán)條件;迭代語句)

{

循環(huán)體;

}

說明:

① for 循環(huán)語句執(zhí)行時,首先執(zhí)行初始化語句,然后執(zhí)行循環(huán)判斷條件,若為 true,則執(zhí)

行循環(huán)體中的語句,最后執(zhí)行迭代語句,完成一次循環(huán)后,重新判斷循環(huán)條件。

② 可以在 for 循環(huán)語句的初始化部分聲明一個變量。它的作用域為整個 for 循環(huán)。

③ for 循環(huán)語句一般用于循環(huán)次數(shù)已知的情況,但也可以根據(jù)循環(huán)結束條件完成循環(huán)次數(shù)

不確定的情況。

④ 在初始化部分和迭代部分可以使用逗號語句來運行多個操作。例如:

for(i=1,j=100;i<=j;i++,j--)

{

}

⑤ 初始化、循環(huán)條件以及迭代部分都可以為空語句,但分號不能省略,三者均為空的時

候,相當于一個無限循環(huán)。例如:

for(;;)

{

}//無限循環(huán)

⑥ for 循環(huán)語句與 while 循環(huán)語句可以相互轉換。例如:

while(true) {

}//同樣是無限循環(huán)

第67頁

57

第 3 章 Java 控制語句

for 循環(huán)結構的流程如圖 3-20 所示。

圖 3-20 for 循環(huán)語句的流程

【例 3.8】用 for 循環(huán)求 1~100 之間所有偶數(shù)的和。

public class ForProduct {

public static void main(String[] args) {

int sum=0;

int i=1;

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

{

if(i%2==0)

sum+=i;

}

System.out.println("1 到 100 之間所有偶數(shù)的和:"+sum);

}

}

運行結果如圖 3-21 所示。

圖 3-21 例 3.8 的運行結果

第68頁

58

Java 程序設計基礎

【附加案例】用 for 循環(huán)輸出 1~100 之間所有能被 10 整除

的數(shù)。

代碼如下:

public class Prime {

public static void main(String[] args) {

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

{

if(i%10==0)

System.out.println(i);

}

}

運行結果如圖 3-22 所示。

3.4 其他控制語句

Java 拋棄了有爭議的 goto 語句,以兩條特殊的流程控制語句(break 和 continue 語句)來

完成流程控制的跳轉。

3.4.1 break 語句

break 語句可用于 switch、for、while 及 do...while 語句中。break

語句在 switch 結構中的作用是退出 switch 結構,使程序從 switch

結構后面的第一條語句開始執(zhí)行, 在循環(huán)結構中 break 的作用是退

出循環(huán)結構,并從緊跟該循環(huán)的第一條語句處開始執(zhí)行。

【例 3.9】輸出 i 的值,直到 i=10 為止。

public class BreakDemo {

public static void main(String[] args) {

int i=0 ;

while(i<1000) {

if(i==10)

break;

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

i++;

}

}

}

運行結果如圖 3-23 所示。

3.4.2 continue 語句

在循環(huán)語句中,continue 可以立即結束當次循環(huán)而執(zhí)行下一次循環(huán)。當然,執(zhí)行前先判斷

循環(huán)條件是否滿足,以決定是否繼續(xù)循環(huán)。continue 語句的格式為:

圖 3-22 附加案例的運行結果

圖 3-23 例 3.9 的運行結果

百萬用戶使用云展網(wǎng)進行精美電子書制作,只要您有文檔,即可一鍵上傳,自動生成鏈接和二維碼(獨立電子書),支持分享到微信和網(wǎng)站!
收藏
轉發(fā)
下載
免費制作
其他案例
更多案例
免費制作
x
{{item.desc}}
下載
{{item.title}}
{{toast}}