for循环语句及循环嵌套(流程控制之循环语句)

for循环语句及循环嵌套(流程控制之循环语句)(1)

for循环语句

for循环是Java程序设计中最有用的循环语句之一。一个for循环可以用来重复执行某条语句,直到某个条件得到满足。在Java5以后新增了foreach语法,对这两种for循环形式做详细的介绍。

1.for语句

语法如下:

for(表达式1;表达式2;表达式3)

{

语句序列

}

表达式1:该表达式用于初始化循环控制变量,它只在循环开始时执行一次。

表达式2:循环条件表达式,它的类型为boolean,如果表达式的值为true就执行一次循环体。

表达式3:该表达式用于改变循环体变量的值。

for循环语句的流程如图1所示。

for循环语句及循环嵌套(流程控制之循环语句)(2)

图1 for循环流程图

For循环的执行过程如下:

第一步:执行表达式1,完成某一变量的初始化工作;例如inti=0;

第二步:判断表达式2的值;例如i<100。若表达式2的值为true,则执行一次循环体;然后执行第三部,否则退出循环体结束For循环。

第三部:执行表达式3,这部分通常执行循环控制变量的修改。

第四步:跳转到第二部继续执行循环

在项目中创建类Circulate,在主方法中使用for循环来计算100以内(包括100),所有偶数之和。

public classCirculate {

publicstatic voidmain(String args[]) {

intsum = 0; // 声明总和变量

for(int i = 0; i <= 100; i = 2) { //定义for循环

sum = i; // 累加100以内的偶数

}

System.out.println("100以内的所有偶数之和为:" sum);

}

}

运行结果如图2所示。

for循环语句及循环嵌套(流程控制之循环语句)(3)

图2 运行结果

2.foreach语句

foreach语句是for语句的特殊简化版本,但是foreach语句并不能完全取代for语句,然而任何的foreach语句都可以改写为for语句版本。foreach并不是一个关键字,习惯上将这种特殊的for语句格式称之为foreach语句。foreach语句在遍历数组等方面为程序员提供了很大的方便。

语法如下:

for(元素变量x : 遍历对象obj){

引用了x的java语句;

}

foreach语句中的元素变量x,不必对其进行初始化,下面通过简单的例子来介绍foreach语句是怎样遍历一维数组的。

在项目中创建类Repetition,在主方法中定义一维数组,并foreach语句遍历该数组

for循环语句及循环嵌套(流程控制之循环语句)(4)

运行结果如图3所示。

for循环语句及循环嵌套(流程控制之循环语句)(5)

图3 运行结果

循环的跳转

continue跳转语句

continue语句只能应用在for、while和do...while循环语句中,用于结束本次循环直接跳过循环体剩余的语句,进行下一次循环。

语法:

continue 标号;

标号:这是可选参数,标号有合法标识符和“:”字符组成,例如“for1:”。

continue语句有两种使用情况:

不带标号跳转

如果执行不带标号的continue语句,将结束本次循环,跳过循环体中剩余的没有被执行的语句,根据循环的条件判断去执行下一次循环,或者结束循环。如果是for循环还要先执行表达式3,改变循环控制变量的值。

实现输出100以内能被7整除的所有数,使用continue语句过滤其它的数字。

public classContinueNull {

publicstatic voidmain(String[] args) {

System.out.println("100以内能被7整除的数有:");

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

if(i % 7 != 0) { // 当i的值不能被7整除时

continue; // 结束本次循环,放弃不能被7整除的书

}

System.out.print(i "、"); // 输出i的值

}

}

}

实例中在For循环中加入了if判断语句,如果循环控制变量i不能被7整除,就执行continue语句放弃本次循环,否则输出变量i,这时变量i肯定能被7整除。

运行结果如图1所示。

for循环语句及循环嵌套(流程控制之循环语句)(6)

图1 实例运行结果

带标号跳转

这种情况下,continue语句不是跳过当前循环语句的一次循环,而是跳过标号指定的循环语句的一次循环,然后判断指定标号的循环条件,以决定是否执行标号指定的循环。

标号定义在语句之前,由一个合法的标识符和“:”字符组成。

语法:

标号:程序代码

continu语句跳转的标号用于指定循环语句,所以定义在循环语句之前。

说明:带标号的continue跳转语句经常用在多层循环中。

使用带标号的For循环和带标号的continue语句输出九九乘法表。

public class MultiplicationTable {

public staticvoid main(String[] args) {

outer:for (inti = 1; i <= 9; i ) { // 第一层循环

for (intj = 1; j <= 9; j ) { // 第二次循环

if (j > i) { //如果j>i

System.out.println(); // 换行

continue outer; // 跳过循环放弃不需要的乘数

}

Stringstr = j "*" i "=" j * i;

System.out.print(str "\t"); // 使用制表符格式化输出

}

System.out.println();

}

}

}

实例中在内层For循环中加入了if判断语句,如果循环控制变量j大于外层循环控制变量i,那这个数字对于乘法表的当前行就没有用了,所以输出一个空行并执行continue语句跳出到outer标识的For循环,这时内层循环语句就被结束或者说终止了,转去执行outer标识的外层循环。

运行结果如图4.24所示。

for循环语句及循环嵌套(流程控制之循环语句)(7)

图2 实例运行结果

如果把内层循环的if语句注释掉,如下所示:

//if (j > i) { // 如果j>i

// System.out.println(); // 换行

// continueouter; // 跳过循环放弃不需要的乘数

//}

然后再运行程序,将会输出如图3所示的结果

for循环语句及循环嵌套(流程控制之循环语句)(8)

图3 实例注释if语句后的运行结果

break跳转语句

正常来说,退出循环的方式应该由循环条件来判断和控制,而break语句可以应用在for、while和do...while循环语句中,来实现强行退出循环。这也给循环增加了一些灵活性,也就是说,在循环条件为true的情况下,也可以根据需要使用break语句强行退出循环。

语法:

break 标号;

和continue语句一样,break语句也有两种使用情况:

不带标号的break语句可以终止break语句所在的循环。

使用while循环和break语句输出1至100所有整数的和。

public class GetSum {

publicstatic voidmain(String[] args) {

intsum = 0; // 声明总和变量

intcontrol = 1; // 声明控制变量

while(true) { // 无限的while循环

sum = control ; // 累加总和并步进控制变量

if(control > 100) { // 如果控制变量大于100

// 输出总和

System.out.println("1至100所有整数的和是:" sum);

break; // 终止循环

}

}

}

}

实例中使用无限循环的while循环不停地累加整数的总和,并是control控制变量自增,当控制变量大于100的时候,说明100已经被累加到sum总和变量里了,这使循环的任务已经完成了,应该输出总和变量的数值,并执行break语句退出循环。

运行结果如图1所示。

for循环语句及循环嵌套(流程控制之循环语句)(9)

图1 实例运行结果

带标号的break语句可以终止标号指定的循环,它常用于跳出多层循环的情况。

当九九乘法表的积大于16时,终止外层循环。

publicclass BreakTab {

publicstaticvoidmain(String[] args) {

loop: for (int i = 1; i <= 9; i ) {

for (int j = 1; j <= i; j ) {

if (i * j > 16) { // 如果乘积大于16

break loop; // 终止外层循环

}

System.out.print(i "*" j "=" i *j "\t");

}

System.out.print("\r\n"); // 输出一个回车换行符

}

}

}

运行结果如图2所示。

for循环语句及循环嵌套(流程控制之循环语句)(10)

图2 实例运行结果

说明:break语句和continue语句的区别在于,break语句将终止整个循环语句,而continue语句只结束本次循环。

明天的话小编会带大家做一些练习题,代码的话还是会以图文方式发送,想要学习计算机编程的朋友可以关注小编哦!我带大家免费学习计算机编程。

,

免责声明:本文仅代表文章作者的个人观点,与本站无关。其原创性、真实性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容文字的真实性、完整性和原创性本站不作任何保证或承诺,请读者仅作参考,并自行核实相关内容。文章投诉邮箱:anhduc.ph@yahoo.com

    分享
    投诉
    首页