23598 Java程序设计基础

发布时间:2022-8-31 | 杂志分类:其他
免费制作
更多内容

23598 Java程序设计基础

41第 3 章 Java 控制语句{char c2//c2 的作用域只在块内,到块外便失去作用}}注意,Java 不允许在两个嵌套的块内声明两个完全同名的变量。例如,下面的代码在编译时是通不过的。public static void main(String[] args){char c1;{char c2char c1//c1 在外层已经定义过了,不可以在内层再定义,程序将出错}}块还应用在流程控制的语句中,如 if 语句、switch 语句及循环语句中。3.2 选择结构语句选择结构也称分支结构,它提供了这样一种控制机制:根据条件值或表达式值的不同选择执行不同的语句序列,其他与条件值或表达式值不匹配的语句序列则被跳过不执行。选择结构的语句又分为 if 语句和 switch 语句。3.2.1 if 语句if 语句根据判断条件的多少又分为单分支 if 语句、双分支 if 语句和多分支 if 语句。1.单分支 if 语句格式如下:if(条件)语句;或者if(条件){语句块;}第一种情况下,在条件为真时,执行一条语句;否则跳过语句执行下面的语句。第二种情况下,在条件为真时,执行多条语句组成的语... [收起]
[展开]
23598 Java程序设计基础
粉丝: {{bookData.followerCount}}
文本内容
第51页

41

第 3 章 Java 控制语句

{

char c2

//c2 的作用域只在块内,到块外便失去作用

}

}

注意,Java 不允许在两个嵌套的块内声明两个完全同名的变量。例如,下面的代码在编译

时是通不过的。

public static void main(String[] args){

char c1;

{

char c2

char c1

//c1 在外层已经定义过了,不可以在内层再定义,程序将出错

}

}

块还应用在流程控制的语句中,如 if 语句、switch 语句及循环语句中。

3.2 选择结构语句

选择结构也称分支结构,它提供了这样一种控制机制:根据条件值或表达式值的不同选择

执行不同的语句序列,其他与条件值或表达式值不匹配的语句序列则被跳过不执行。选择结构

的语句又分为 if 语句和 switch 语句。

3.2.1 if 语句

if 语句根据判断条件的多少又分为单分支 if 语句、双分支 if 语句和多分支 if 语句。

1.单分支 if 语句

格式如下:

if(条件)

语句;

或者

if(条件)

{

语句块;

}

第一种情况下,在条件为真时,执行一条语句;否则跳过语

句执行下面的语句。

第二种情况下,在条件为真时,执行多条语句组成的语句块;

否则跳过语句执行下面的语句。

上述格式中的“条件”为一关系表达式或布尔逻辑表达式,其

值为一布尔值(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;

}

当条件为真时,执行语句块 1,然后跳过 else 和

语句块 2 执行后面的语句;当条件为假时,跳过语句

体 1,执行语句块 2;然后继续执行后面的语句。注

意,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;

// 提示用户输入年数

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)输入数字 2007 的结果 (b)输入数字 2016 的结果

图 3-5 附加案例的运行结果

代码分析:

import javax.swing.JOptionPane;导入一个新的类 JOptionPane,它是图形界面的提示框。

① 属于 javax.swing 包。

② 功能:定制 4 种不同种类的标准对话框。

ConfirmDialog:确认对话框。提出问题,然后由用户自己来确认(单击 Yes 或 No 按钮)。

InputDialog:提示输入文本。

MessageDialog:显示信息。

OptionDialog:组合其他三个对话框类型。

③ 这 4 个对话框可以采用 show×××Dialog()来显示。例如:

showConfirmDialog():显示确认对话框。

showInputDialog():显示输入文本对话框。

showMessageDialog():显示信息对话框。

showOptionDialog():显示选择性的对话框。

④ 参数说明。

ParentComponent:指示对话框的父窗口对象,一般为当前窗口。也可以为 null,即采用默

认的 Frame 作为父窗口,此时对话框将设置在屏幕的正中。

message:指示要在对话框内显示的描述性文字。

String title:标题条文字串。

Component:在对话框内要显示的组件(如按钮)。

Icon:在对话框内要显示的图标。

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 为真时,执行语句块 1,否则如果条件 2 的值为 true 则执行语句块 2……如果前

面 n 个条件都不成立,则执行语句块 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("优秀");

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,

现存入银行 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

类是一个用于扫描输入文本的实用程序。由于任何数据都必须通过同一模式的捕获组检索或通

过使用一个索引来检索文本的各个部分,于是可以结合使用正则表达式和从输入流中检索特定

类型数据项的方法。这样,除了能使用正则表达式之外,Scanner 类还可以任意地对字符串和基

本类型(如 int 和 double)的数据进行分析。借助于 Scanner 类,可以针对任何要处理的文本内

容编写自定义的语法分析器。

代码 Scanner scan = new Scanner(System.in);定义 Scanner 对象,参数是标准输入流。System.out

是标准的输出流。

注意:在 Eclipse 中一定要在开始时在 package 下面导入 java.util.Scanner,不然 Scanner 便

不能调用。

常用的输入不同数据类型的方法:

输入字节类型:nextByte()。

输入短整型:nextShort()。

输入整型:nextInt()。

输入长整型:nextLong()。

输入单精度浮点型:nextFloat()。

输入双精度浮点型:nextDouble()。

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

3.2.2 switch 语句

处理多个分支问题时,使用多分支 if 语句显得非常烦琐,Java 提供了一种多分支结构的

switch 语句。switch 语句根据表达式的值从多分支中选择一个来执行。它的格式如下:

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

子句中的值相比较, 如果遇到匹配的值,则执行该 case 子句的语句序列。

case 子句只是起到一个标号的作用,用来査找匹配的入口,并从此处开始执行。case 子句

中的值必须是常量,而且所有 case 子句中的值应该是不同的。

default 子句可任选。当表达式的值与任一 case 子句中的值都不匹配时,程序执行 default

后面的语句;如果表达式的值与任一 case 子句中的值都不匹配,且没有 default 子句,则程序不

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

break 语句用来在执行完成一个 case 分支后,使程序跳出 switch 语句,即终止 switch 语句

的执行。如果没有 break 语句,当程序执行完匹配的 case 语句序列后,还会继续执行后面的 case

语句序列。因此,一般应该在每个 case 分支后,用 break 语句终止后面的分支语句序列的执行。

在某些特殊情况下,当多个相邻的 case 分支执行一组相同的操作时,为了简化程序的编写,相

同的程序段只须出现在最后一个 case 分支中;即只在这组分支的最后一个 case 后加 break 语

句,组中其他的 case 分支则不使用 break 语句。

case 分支中若包含多条语句,可以不用花括号{}括起,switch 语句的流程如图 3-8 所示。

图 3-8 switch 语句的流程

【例 3.4】判断数字 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 的运行结果

【附加案例】根据如下代码和运行结果分析 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 语句时,产生的这种结果称为穿透。

3.2.3 选择结构语句的嵌套

上述各种条件结构的语句中,根据实际需要,在每一个条件结构中都可以嵌入另外的条件

结构,使用时要特别注意 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】求三个数当中的最大值。

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 的运行结果

【附加案例】学生毕业的两个条件为考试成绩和考勤成绩都大于 60 分。

代码如下:

public class Graduation {

public static void main(String[] args) {

int score=65;

//考试成绩

int daily=70;

//考勤成绩

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

System.out.println("正常毕业");

}else{

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

System.out.println("考试成绩和考勤成绩都不合格,不能毕业");

}else if(daily<60){

System.out.println("考勤成绩不合格,无法毕业");

}else{

System.out.println("考试成绩都不合格,不能毕业");

}

}

}

}

运行结果如图 3-13 所示。

图 3-13 附加案例的运行结果

第63页

53

第 3 章 Java 控制语句

3.3 循环结构语句

在程序设计中,有时需要反复执行一段相同的代码,直到满足一定的条件为止。Java 中利

用循环结构来实现这种流程的控制。Java 提供了三种循环语句:for 语句、while 语句和 do 语

句。一个循环结构一般应包含 4 部分内容。

① 初始化部分:用来设置循环控制的一些初始条件。

② 循环体部分:这是反复执行的一段代码,可以是单一的一条语句,也可以是复合语句。

③ 迭代部分:用来修改循环控制条件。

④ 判断部分:也称终止部分,是一个关系表达式或布尔逻辑表达式,其值用来判断是否

满足循环终止条件,每执行一次循环都要对该表达式求值。

3.3.1 while 循环语句

当不知道一个循环会被重复执行多少次时,可以选择

不确定循环结构:while 循环。while 循环又称“当型”循

环,while 循环结构的流程如图 3-14 所示。

它的一般格式为:

[初始化语句]

while(条件表达式)

{

循环体;

[迭代语句;]

}

说明:

① 初始化控制条件这部分是任选的,

② 当条件表达式的值为 true 时,循环执行花括号中

的语句,其中迭代部分是任选的;若某次判断条件表达式

的值为 false,则结束循环的执行。

③ while 循环首先计算终止条件,当条件满足时,才

去执行循环体中的语句;若首次计算条件就不满足,则循环体部分一次也不会被执行。这是“当

型”循环的特点。

④ while 循环一般用于循环次数不确定的情况,但也可以用于循环次数确定的情况。

【例 3.6】用 while 循环求 1~100 之间所有偶数的和。

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 循环结构的流程

第64页

54

Java 程序设计基础

System.out.println("1 到 100 之间所有偶数的和:"+sum);

}

}

运行结果如图 3-15 所示。

图 3-15 例 3.6 的运行结果

【附加案例】用 while 循环输出 1~100 之间所有能被 10 整除

的数。

代码如下:

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 循环语句

do...while 循环又称“直到型”循环。它的一般格式为:

[初始化语句]

do{

循环体;

[迭代语句;]

}while(条件表达式);

说明:

① do...while 结构首先执行循环体,然后计算终止条件。若结果为 true,则循环执行花括号

中的循环体,直到布尔表达式的结果为 false。

② 与 while 结构不同,do...while 结构的循环体至少被执行一次,这是“直到型”循环的特点。

do...while 循环语句的流程如图 3-17 所示。

【例 3.7】用 do...while 循环求 1~100 之间所有偶数的和。

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 之间所有偶数的和:"+sum);

}

}

运行结果如图 3-18 所示。

图 3-17 do...while 循环语句的流程 图 3-18 例 3.7 的运行结果

【附加案例】用 do...while 循环输出 1~100 之间所有能被 10 整除的数。

代码如下:

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 循环与 do...while 循环最大的区别就在于:while 先判断条件再循环,循环体可以一次

也不执行;do...while 先循环再判断条件,循环体至少执行一次。

第66页

56

Java 程序设计基础

图 3-19 附加案例的运行结果

3.3.3 for 循环语句

如果事先知道循环会被重复执行多少次,可以选择 Java 提供的确定循环结构 for 循环。for

循环语句的一般格式为:

for(初始化语句;循环条件;迭代语句)

{

循环体;

}

说明:

① for 循环语句执行时,首先执行初始化语句,然后执行循环判断条件,若为 true,则执

行循环体中的语句,最后执行迭代语句,完成一次循环后,重新判断循环条件。

② 可以在 for 循环语句的初始化部分声明一个变量。它的作用域为整个 for 循环。

③ for 循环语句一般用于循环次数已知的情况,但也可以根据循环结束条件完成循环次数

不确定的情况。

④ 在初始化部分和迭代部分可以使用逗号语句来运行多个操作。例如:

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

{

}

⑤ 初始化、循环条件以及迭代部分都可以为空语句,但分号不能省略,三者均为空的时

候,相当于一个无限循环。例如:

for(;;)

{

}//无限循环

⑥ for 循环语句与 while 循环语句可以相互转换。例如:

while(true) {

}//同样是无限循环

第67页

57

第 3 章 Java 控制语句

for 循环结构的流程如图 3-20 所示。

图 3-20 for 循环语句的流程

【例 3.8】用 for 循环求 1~100 之间所有偶数的和。

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 之间所有偶数的和:"+sum);

}

}

运行结果如图 3-21 所示。

图 3-21 例 3.8 的运行结果

第68页

58

Java 程序设计基础

【附加案例】用 for 循环输出 1~100 之间所有能被 10 整除

的数。

代码如下:

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

结构后面的第一条语句开始执行, 在循环结构中 break 的作用是退

出循环结构,并从紧跟该循环的第一条语句处开始执行。

【例 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 语句

在循环语句中,continue 可以立即结束当次循环而执行下一次循环。当然,执行前先判断

循环条件是否满足,以决定是否继续循环。continue 语句的格式为:

图 3-22 附加案例的运行结果

图 3-23 例 3.9 的运行结果

百万用户使用云展网进行精美电子书制作,只要您有文档,即可一键上传,自动生成链接和二维码(独立电子书),支持分享到微信和网站!
收藏
转发
下载
免费制作
其他案例
更多案例
免费制作
x
{{item.desc}}
下载
{{item.title}}
{{toast}}