第 3章 程序流程控制
任何一门语言都需要基本的流程控制语句,其思想也符合人类判断问题或做事的逻辑过程。在
Java语言中提供了判断分支语句,多分支语句、
switch语句、循环语句和跳转语句,通过本章的学习,读者可以掌握基本的程序流程,为编写面向对象的程序打基础,在 Java中程序流程的控制体现在方法的设计和实现上。本节将依次按照分支语句、循环语句和跳转语句的顺序介绍程序流程。
3.1 流程控制概述
在面向过程的语言中,程序流程控制是十分重要的内容,因为一个过程总是由各种判断、循环、
跳转等实现。在 Java这样面向对象的语言中,仍然不可或缺的需要程序的流程控制,因为对象行为(也称为方法)的实现中仍然需要流程控制。
流程控制上任何一门高级开发语言都必须认真面对的问题。学习本章时,要求读者认真学习每一小节的内容,掌握语句的语句格式,和用法,模仿书上的例子亲自编写并执行一遍。
3.2 条件语句
在日常生活中,读者经常会遇到这样的问题:如果明天天气好,就去爬香山。这里如果就是一个判断关键字、而爬香山就是判断成立时的结果。在程序的流程控制中,条件语句就完成这样的功能。简单条件语句的格式为:
If(条件表达式 )
执行语句;
if语句中的“条件表达式”的结果是 boolean值,无论条件表达式的形式如何体现,但 ( )内的最终结果是个 boolean值。如果 boolean值为真
( true)则执行“执行语句”。如果 if后 ( )内的 boolean值为假( false)
不执行紧“执行语句”,此时跳出 if语句。简单 if语句的流程图如图 3.1
所示。
3.3 分支语句
上节介绍了简单的 if语句,在日常生活中其实还存在大量的多重判断,例如:如果明天天气好就去爬香山,如果明天阴天就待在家看电影,如果 DVD机坏了就安心看书。显然,
这里有两个判断,首先是晴天与阴天的判断。其次是阴天的条件下又有一层判断如果 DVD机坏了,就看书。上述说法有些啰嗦,在日常生活中没有人有意识的去做上述的判断。
但事实上,在人类生活的潜意识里确实存在这种逻辑判断,
只是人与机器相比实在是太聪明了,人积累了大量的逻辑知识和生活经验,不用有意识的思考就可以随时得出逻辑计算的结果。但是,计算机只知道程序,没有程序指令它就无法工作,所以必须在程序设计语言中设计明确的各种指令格式,来满足实现复杂逻辑判断的能力。本节将重点介绍更复杂的逻辑判断,多分支语句。
3.3.1 简单的 if-else语句
简单的 if-else语句是多分支语句的一种。其语句格式是:
if(条件表达式 )
执行语句 1;
else
执行语句 2;
如果 if条件语句成立,即 ()内的 boolean值为真,
则执行语句 1,否则 if条件语句不成立,即 ()内的
boolean值为假,执行语句 2。 If-else语句实现了一种是非判断,如果“是”做什么,如果“不是”
做什么。
3.3.2 if-else多分支语句
简单的 if-else语句可以嵌套使用以实现更复杂的条件判断,其语句格式是:
if (条件 1)
if(条件 2);
执行语句 1
else
if(条件 3)
执行语句 3
else
执行语句 4;
3.3.3 if嵌套语句
if嵌套语句也是经常使用的多分支判断语句,在一次判断之后又有新一层的判断,接着又有一层判断,逐渐深入,
达到实现复杂判断的目的,这种多层次判断相当于多条件判断,在满足几个条件后再执行适当的语句。 If嵌套语句的格式是:
if(条件 1)
if(条件 2)
if(条件 3)
执行语句 1;
在 if(条件 1)成立的条件下继续判断直到 if(条件 3)也成立,再执行语句 1。如果其中有一个条件不满足,则跳出该
if嵌套语句,继续执行嵌套语句之外的代码。
3.3.4 switch语句
switch语句是在多个语句中选择其一执行的语句,其语言格式为:
switch(表达式 )
case 值 1
执行语句 1
break;
case 值 2
执行语句 2
break;
case 值 3
执行语句 3
break;
default:
执行语句 4
break;
3.3.5 分支语句中的 return
在分支语句中可以使用 return语句返回一种数据,
如 boolean型、或 int型等,但 return只能用在方法中,表示该方法返回一个值,当然方法可以没有返回值,即返回值为空( void)。
代码分支语句中的 return示例程序。
代码 分支语句中的 return示例程序
1 private int returnInt(int xx,int yy){
2 if(xx>yy)
3 return xx;
4 else
5 return yy;
6 }
3.4 循环语句
循环语句顾名思义是循环执行的语句,在满足一定条件的基础上,循环执行循环体中的语句,它是一种反复执行一段程序的流程结构,循环语句包括,while循环语句,do-while循环语句,for
循环语句。
3.4.1 while循环语句
while循环语句的语句格式是:
while(表达式 1){
执行语句
}
当表达式的值为真时,执行 {}内的语句;当表达式的值为假时,则不执行 {}内的语句,跳出 while
循环语句。
代码 while循环语句示例程序 。 这个例子依次输入数组中的数值,并打印出来 。 While条件表达式的作用就是保证在数组的有效长度内,一旦超过数组的长度,while循环终止,程序退出 while循环 。
3.4.2 do-while循环语句
do-while循环语句的语句格式为:
do
执行代码;
while(布尔表达式 )
执行该循环语句时,首先执行 do之后的代码段,再判断
while后的布尔表达式,如果布尔表达式为真,则继续执行
do后的代码段,如果布尔表达式的值为假,则不再执行 do
后的代码段,程序跳出 do-while循环。细心的读者可能会发现,do-while语句至少执行一次 do后的代码段,while语句如果其布尔表达式为假,则 while后的代码就不可能执行,
这是 do-while语句与 while语句的重要区别。
3.4.3 for循环语句
for循环语句是 Java提供的非常重要的循环语句。其语句格式是:
for(初始表达式;布尔表达式;增量表达式 )
{
执行代码
}
循环变量的初始值由初始表达式赋予,也可以没有初始表达式。布尔表达式是判断是否继续执行“执行代码”的依据,如果布尔表达式为真则继续运行“执行代码”,如果为假则跳出 for循环。增量表达式在“执行代码”运行后计算。一般增量表达式与
for循环的初始值相关。 for循环语句的程序流程如图所示。
3.5 跳转语句
跳转就是指不按语句的正常顺序执行,而是突然改变语句的运行顺序。本节就学习 Java中常见的两个跳转语句。一个是 break跳转语句,该语句的作用是直接跳出循环语句或判断分支语句;一个是 continue跳转语句,该语句的作用是程序从循环体的开始处执行,不必考虑循环体中已经执行了多少轮循环。
3.5.1 break跳转语句
使用跳转语句,可以更直接的控制程序的流程,break跳转语句就是其中之一,其作用是直接跳出循环语句或分支语句如 switch语句。在 switch分支语句中,已经使用过 break
语句,一旦执行该跳转语句,程序就退出 switch语句。在代码 3-7中,做相应地修改,在第 10行代码后,添加跳转语句 break,其作用是在获得第一个大于 60的数据时输出该值并跳出 for循环。这样就实现了获得数组中第一个大于 60的数据,当然也获得了该数据在数组中的位置。在 for循环外增加一行输出 System.out.println(,结束 for循环” )。
5 if(IntArray[i]>60){
6 System.out.println(IntArray[i]);
7 break;
8 }
9
10 System.out.println(,结束 for循环” );
3.5.2 continue跳转语句
continue跳转语句正好与 break跳转语句相反,当执行 continue语句时,程序从循环体的开始处执行,而不考虑循环体中已经执行了多少轮循环,在 for循环语句中,执行到 continue语句时,不再执行循环体中其他的代码,而是直接跳转到增量表达式,再开始下一轮的 for循环 。 在 while和 do-while语句中,运行到
continue语句时则跳转到相应的条件表达式,再开始下一轮的循环 。
代码是 continue跳转语句在 for循环语句中的示例程序 。
代码 continue跳转语句示例程序
1 public class ContinueTest{
2 public static void main(String[] args){
3 int i=1;
4 for(; i<5;i++){
5 System.out.println(“i=,i) ;
6 System.out.println(,第,+i+” 轮循环开始,);
7 if(i>1)
8 continue;
9 System.out.println(,第,+i+” 轮循环结束,);
10 }
11 }
12}
3.6 本章习题
( 1)学完本章后,读者需要回答:
1,Java条件语句的分类?
2.分支语句、循环语句和跳转语句的使用方法?
3.阅读程序判断整数 m,n的最后值和含义。
Int m = 0,n =0;
for(int i=0; i<100 ;i++){
if(i%3==0){
m++
}
if(i%7==0){
n++
}
}
4.编写程序:
计算 1~100的整数的累加和,并显示每个整数和当前累加和的对应关系。
5.计算 30的阶乘。
( 2)注意事项。
1.在 Java程序流程控制中,最好少使用或不使用跳转语句,这样往往容易破坏 Java
程序良好的面向对象特性。
2.在使用嵌套语句时,如果超过 3层嵌套要重新考虑该功能的设计,一般嵌套语句不能超过 3层。
任何一门语言都需要基本的流程控制语句,其思想也符合人类判断问题或做事的逻辑过程。在
Java语言中提供了判断分支语句,多分支语句、
switch语句、循环语句和跳转语句,通过本章的学习,读者可以掌握基本的程序流程,为编写面向对象的程序打基础,在 Java中程序流程的控制体现在方法的设计和实现上。本节将依次按照分支语句、循环语句和跳转语句的顺序介绍程序流程。
3.1 流程控制概述
在面向过程的语言中,程序流程控制是十分重要的内容,因为一个过程总是由各种判断、循环、
跳转等实现。在 Java这样面向对象的语言中,仍然不可或缺的需要程序的流程控制,因为对象行为(也称为方法)的实现中仍然需要流程控制。
流程控制上任何一门高级开发语言都必须认真面对的问题。学习本章时,要求读者认真学习每一小节的内容,掌握语句的语句格式,和用法,模仿书上的例子亲自编写并执行一遍。
3.2 条件语句
在日常生活中,读者经常会遇到这样的问题:如果明天天气好,就去爬香山。这里如果就是一个判断关键字、而爬香山就是判断成立时的结果。在程序的流程控制中,条件语句就完成这样的功能。简单条件语句的格式为:
If(条件表达式 )
执行语句;
if语句中的“条件表达式”的结果是 boolean值,无论条件表达式的形式如何体现,但 ( )内的最终结果是个 boolean值。如果 boolean值为真
( true)则执行“执行语句”。如果 if后 ( )内的 boolean值为假( false)
不执行紧“执行语句”,此时跳出 if语句。简单 if语句的流程图如图 3.1
所示。
3.3 分支语句
上节介绍了简单的 if语句,在日常生活中其实还存在大量的多重判断,例如:如果明天天气好就去爬香山,如果明天阴天就待在家看电影,如果 DVD机坏了就安心看书。显然,
这里有两个判断,首先是晴天与阴天的判断。其次是阴天的条件下又有一层判断如果 DVD机坏了,就看书。上述说法有些啰嗦,在日常生活中没有人有意识的去做上述的判断。
但事实上,在人类生活的潜意识里确实存在这种逻辑判断,
只是人与机器相比实在是太聪明了,人积累了大量的逻辑知识和生活经验,不用有意识的思考就可以随时得出逻辑计算的结果。但是,计算机只知道程序,没有程序指令它就无法工作,所以必须在程序设计语言中设计明确的各种指令格式,来满足实现复杂逻辑判断的能力。本节将重点介绍更复杂的逻辑判断,多分支语句。
3.3.1 简单的 if-else语句
简单的 if-else语句是多分支语句的一种。其语句格式是:
if(条件表达式 )
执行语句 1;
else
执行语句 2;
如果 if条件语句成立,即 ()内的 boolean值为真,
则执行语句 1,否则 if条件语句不成立,即 ()内的
boolean值为假,执行语句 2。 If-else语句实现了一种是非判断,如果“是”做什么,如果“不是”
做什么。
3.3.2 if-else多分支语句
简单的 if-else语句可以嵌套使用以实现更复杂的条件判断,其语句格式是:
if (条件 1)
if(条件 2);
执行语句 1
else
if(条件 3)
执行语句 3
else
执行语句 4;
3.3.3 if嵌套语句
if嵌套语句也是经常使用的多分支判断语句,在一次判断之后又有新一层的判断,接着又有一层判断,逐渐深入,
达到实现复杂判断的目的,这种多层次判断相当于多条件判断,在满足几个条件后再执行适当的语句。 If嵌套语句的格式是:
if(条件 1)
if(条件 2)
if(条件 3)
执行语句 1;
在 if(条件 1)成立的条件下继续判断直到 if(条件 3)也成立,再执行语句 1。如果其中有一个条件不满足,则跳出该
if嵌套语句,继续执行嵌套语句之外的代码。
3.3.4 switch语句
switch语句是在多个语句中选择其一执行的语句,其语言格式为:
switch(表达式 )
case 值 1
执行语句 1
break;
case 值 2
执行语句 2
break;
case 值 3
执行语句 3
break;
default:
执行语句 4
break;
3.3.5 分支语句中的 return
在分支语句中可以使用 return语句返回一种数据,
如 boolean型、或 int型等,但 return只能用在方法中,表示该方法返回一个值,当然方法可以没有返回值,即返回值为空( void)。
代码分支语句中的 return示例程序。
代码 分支语句中的 return示例程序
1 private int returnInt(int xx,int yy){
2 if(xx>yy)
3 return xx;
4 else
5 return yy;
6 }
3.4 循环语句
循环语句顾名思义是循环执行的语句,在满足一定条件的基础上,循环执行循环体中的语句,它是一种反复执行一段程序的流程结构,循环语句包括,while循环语句,do-while循环语句,for
循环语句。
3.4.1 while循环语句
while循环语句的语句格式是:
while(表达式 1){
执行语句
}
当表达式的值为真时,执行 {}内的语句;当表达式的值为假时,则不执行 {}内的语句,跳出 while
循环语句。
代码 while循环语句示例程序 。 这个例子依次输入数组中的数值,并打印出来 。 While条件表达式的作用就是保证在数组的有效长度内,一旦超过数组的长度,while循环终止,程序退出 while循环 。
3.4.2 do-while循环语句
do-while循环语句的语句格式为:
do
执行代码;
while(布尔表达式 )
执行该循环语句时,首先执行 do之后的代码段,再判断
while后的布尔表达式,如果布尔表达式为真,则继续执行
do后的代码段,如果布尔表达式的值为假,则不再执行 do
后的代码段,程序跳出 do-while循环。细心的读者可能会发现,do-while语句至少执行一次 do后的代码段,while语句如果其布尔表达式为假,则 while后的代码就不可能执行,
这是 do-while语句与 while语句的重要区别。
3.4.3 for循环语句
for循环语句是 Java提供的非常重要的循环语句。其语句格式是:
for(初始表达式;布尔表达式;增量表达式 )
{
执行代码
}
循环变量的初始值由初始表达式赋予,也可以没有初始表达式。布尔表达式是判断是否继续执行“执行代码”的依据,如果布尔表达式为真则继续运行“执行代码”,如果为假则跳出 for循环。增量表达式在“执行代码”运行后计算。一般增量表达式与
for循环的初始值相关。 for循环语句的程序流程如图所示。
3.5 跳转语句
跳转就是指不按语句的正常顺序执行,而是突然改变语句的运行顺序。本节就学习 Java中常见的两个跳转语句。一个是 break跳转语句,该语句的作用是直接跳出循环语句或判断分支语句;一个是 continue跳转语句,该语句的作用是程序从循环体的开始处执行,不必考虑循环体中已经执行了多少轮循环。
3.5.1 break跳转语句
使用跳转语句,可以更直接的控制程序的流程,break跳转语句就是其中之一,其作用是直接跳出循环语句或分支语句如 switch语句。在 switch分支语句中,已经使用过 break
语句,一旦执行该跳转语句,程序就退出 switch语句。在代码 3-7中,做相应地修改,在第 10行代码后,添加跳转语句 break,其作用是在获得第一个大于 60的数据时输出该值并跳出 for循环。这样就实现了获得数组中第一个大于 60的数据,当然也获得了该数据在数组中的位置。在 for循环外增加一行输出 System.out.println(,结束 for循环” )。
5 if(IntArray[i]>60){
6 System.out.println(IntArray[i]);
7 break;
8 }
9
10 System.out.println(,结束 for循环” );
3.5.2 continue跳转语句
continue跳转语句正好与 break跳转语句相反,当执行 continue语句时,程序从循环体的开始处执行,而不考虑循环体中已经执行了多少轮循环,在 for循环语句中,执行到 continue语句时,不再执行循环体中其他的代码,而是直接跳转到增量表达式,再开始下一轮的 for循环 。 在 while和 do-while语句中,运行到
continue语句时则跳转到相应的条件表达式,再开始下一轮的循环 。
代码是 continue跳转语句在 for循环语句中的示例程序 。
代码 continue跳转语句示例程序
1 public class ContinueTest{
2 public static void main(String[] args){
3 int i=1;
4 for(; i<5;i++){
5 System.out.println(“i=,i) ;
6 System.out.println(,第,+i+” 轮循环开始,);
7 if(i>1)
8 continue;
9 System.out.println(,第,+i+” 轮循环结束,);
10 }
11 }
12}
3.6 本章习题
( 1)学完本章后,读者需要回答:
1,Java条件语句的分类?
2.分支语句、循环语句和跳转语句的使用方法?
3.阅读程序判断整数 m,n的最后值和含义。
Int m = 0,n =0;
for(int i=0; i<100 ;i++){
if(i%3==0){
m++
}
if(i%7==0){
n++
}
}
4.编写程序:
计算 1~100的整数的累加和,并显示每个整数和当前累加和的对应关系。
5.计算 30的阶乘。
( 2)注意事项。
1.在 Java程序流程控制中,最好少使用或不使用跳转语句,这样往往容易破坏 Java
程序良好的面向对象特性。
2.在使用嵌套语句时,如果超过 3层嵌套要重新考虑该功能的设计,一般嵌套语句不能超过 3层。