JAVA: 循环结构

 循环结构(for)

 for语句

 考虑如下循环问题的相同之处

请考虑如下三个题目的相似之处:

  1. 计算从1加到100的值;
  2. 计算1+1/3+1/5+…+1/999;
  3. 找出从第1号学员到第500号学员中成绩大于90的学员。

通过上面的问题可以看出,如上三个题目都是在有规律的重复执行某个操作,在程序中

考虑使用循环结构来解决。首先需要先找到前面介绍的循环变量,此循环变量在每一次的循环中有规律的发生变化,并且常常作为判断是否继续循环的条件。

首先,看第1个题目,设计循环变量i ,i的值为1,2,…,100,即:从1开始,每次增1。第二个题目,设计循环变量i , i的值为1,3,5,…,999,即:从1开始,每次增2。第三个题目,设计循环变量i , i的值为1,2,…,500,即:从1开始,每次增1。

通过上面的分析,可以看出,如上的循环都是固定次数的循环,这种情况,优先考虑使用for语句来实现。

 for语句的执行逻辑

for语句是循环中最最常用的一种方式。for循环用于将某个语句或语句块重复执行预定次数的情形。语法如下:


    
    
  1. for ( 表达式1;表达式2;表达式3 ) {
  2. 语句块(循环体)
  3. }

可以看出,for循环的三个表达式之间通过分号;进行分隔,其执行逻辑如下所示:

  1. 计算表达式1的值,通常为循环变量赋初值;
  2. 计算表达式2(表达式2为逻辑表达式)的值,即判断循环条件是否为真,若值为真则执行循环体一次(语句块),否则跳出循环;
  3. 执行循环体;
  4. 计算表达式3的值,此处通常写更新循环变量的赋值表达式;
  5. 计算表达式2的值,若值为true则执行循环体,否则跳出循环;
  6. 如此循环往复,直到表达式2的值为false。

 for语句的流程图

for语句流程图如图-1所示:

图- 1

简单示例如下:


    
    
  1. for ( int i = 1 ; i <= 10 ; i + + ) {
  2.         System.out.println( i );
  3. }

如上程序的输出结果为:1 2 3 4 5 6 7 8 9 10

分析如上程序的执行过程:首先,初始化i的值为1,判断i是否小于等于10,结果为true,其次,输出i的值1,然后,执行i的自增1,再判断i是否小于等于10,结果为true,执行输出i的值2,以此类推……输出i的值10后,执行i的自增1,此为i为11,判断结果为false,程序终止。

for语句用于实现固定次数循环

for语句常常用于解决固定次数循环的处理,比如说累加和,想求1+2+3+…+100的结果,次数固定执行100次,可以考虑使用for循环处理,参见如下代码:


    
    
  1. int sum = 0 ;
  2. for ( int i = 1 ; i <= 100 ; i + + ) {
  3. sum += i ;
  4. }
  5. System.out.println(1100的和为:” + sum ) ;

分析上面代码的执行过程,首先,声明一个变量用于保存累加和,此变量命名为sum,赋初始值为0,而后,for循环从1开始,每次增1,执行100次,循环体中将i的值累加到sum变量中。注意:每次都是在sum的基础之上加上i,所以使用了sum += i。循环结束后,输出结果“1到100的和为:5050“。

了解了如上题目之后,问:想求10的阶乘,即1*2*3*…*10,可不可以使用for循环来解决,如果可以的话要如何解决呢?当然可以,try!!!

 for语句三个表达式特殊用法

首先回顾for语句的语法:


    
    
  1. for ( 表达式1;表达式2;表达式3 ) {
  2. 语句块    }

通过上面的代码可以看出,for语句实现循环时需要3个表达式并且使用分号;分隔,

在实际使用时,for语句可以有几种特殊的使用方法:

特殊方式1:表达式1位置内容为空,看如下代码:


    
    
  1. int sum = 0 ;
  2. int i = 1;
  3. for ( ; i <= 10 ; i + + ) {
  4.         sum += i ;
  5. }
  6. System.out.println(110的和为:” + sum ) ;

通过上面的代码可以看出,虽然省略了表达式1,但只是将它放在了for循环的外面进行声明,只是位置不同而已。在此需要注意一点,即使for语句中不写表达式1了,表达式2前面的分号;也不能省略。

特殊方式2:表达式3位置内容为空时,看如下代码:


    
    
  1. int sum = 0 ;
  2. for ( int i = 1 ; i <= 10 ; ) {
  3. sum += i ;
  4.         i + + ;
  5. }
  6. System.out.println(110的和为:” + sum ) ;

通过上面的代码可以看出,虽然省略了表达式3,但也只是将它放在了for循环体之中,只是位置不同而已。在此需要注意一点,即使for语句中不写表达式3了,表达式2后面的分号;也不能省略。

特殊方式3:表达式1,2,3位置内容均为空时,看如下代码:


    
    
  1. for ( ; ; ) {
  2. System.out.println(“我要学习……”);
  3. }

通过上面的代码可以看出,如上代码没有循环变量、没有条件控制,因此会造成死循环,而死循环在编写程序过程中是必须要避免的,可以在循环体中添加break跳出循环。

特殊方式4:表达式 1 和 3 位置内容的多样化

for语句中的三个表达式中表达式1和表达式3可以使用逗号表达式,逗号表达式就是通过”,”运算符隔开的多个表达式组成的表达式,从左向右进行计算。看如下示例:


    
    
  1. for ( int i =1 , j = 6 ; i <= 6 ; i +=2 , j -=2 ) {
  2. System.out.println(“ i , j =+ i +,+ j );
  3. }

上面的代码的执行逻辑如下:初始设置i为1,j为6,判断i是否小于等于6,为真执行循环体,而后执行i+=2,j-=2,即:i增2,j减2。再判断i是否小于等于6,为真继续执行循环体,以此类推,直到条件为false。本程序的输出结果为:

  1. i , j = 1 , 6
  2. i , j = 3 , 4
  3. i , j = 5 , 2

循环中使用break语句

循环中的break语句应用率很广,break可用于循环语句或switch语句中,其用于循环时,可使程序终止循环而执行循环后面的语句,常常与条件语句一起使用,看如下代码:


    
    
  1. int sum = 0;
  2. for(int i=1; i<=100; i++){
  3. if(sum>=4000){
  4. break;
  5. }
  6. sum += i;
  7. }
  8. System.out.println(sum);

上面的程序需要统计1到100的累加和,条件是当和大于等于4000时则终止计算,此案例通过在if语句中使用break实现了for语句的退出,本程序最终sum的值为:4005。

 循环中使用continue语句

continue语句只能用于循环中,它的作用为跳过循环体中剩余语句而执行下一次循环,看如下代码:


    
    
  1. int sum = 0;
  2. for(int i=1; i<=100; i++){
  3. if( i % 10 == 3 ){
  4. continue;
  5. }
  6. sum += i;
  7. }
  8. System.out.println(sum);

上面的程序需要统计1到100的累加和,条件是跳过所有个位为3的,此案例通过在if语句中使用continue实现了跳过for语句中剩余的循环体语句,本程序最终sum的值为: 4570。

 循环问题

 循环问题

在实际应用中,当碰到需要多次重复的执行一个或多个任务的情况时,考虑使用循环来

解决,在前面所介绍的3种循环(while、do-while、for)中,一般情况下,for循环使用得最多,而对于for循环结构,一定要分析出需要解决业务的三个部分:

  1. 循环变量初始状态
  2. 循环条件
  3. 循环变量的改变

分析好了上面的三个部分,for语句的结构也就定义好了,其它的问题只在于填写不同

的循环体来解决不同的业务问题而已。

 循环问题定义------“当”循环

如果业务可以转换为“当……“这样的句式时,优先选择while语句来实现。看下面的需求:假设年存款利率为3%,本金为10000,问存款总额超过12000时,收益具体是多少?

分析这个需求,可以转化为下面的理解:“当“存款总额小于12000时,以3%的利率增长,那么条件就是total<12000,这种”当“句式优先考虑使用while语句实现,简易代码如下:


    
    
  1.     ……
  2. while( 条件 ) {
  3. total += ( total * 0.03 ) ;
  4. }
  5. ……

循环问题定义------“直到”循环

如果业务可以转换为”直到……”这样的句式时,优先选择do-while语句来实现。看下面的需求:在验证身份时必须提供密码并核对,密码不正确则继续输入密码。分析这个需求,可以转化为下面的理解:获取密码,”直到”输入的值为123456,那么条件就是! ”123456”.equals(inputPwd),这种“直到……“句式优先考虑使用do-while语句实现,简易代码如下:


    
    
  1. ……
  2. do {
  3. ……
  4. } while!123456.equals(inputPwd));
  5. ……

 循环问题定义------固定次数循环

如果业务中可以获取到一个确切的循环次数时可以考虑使用for循环来实现,看下面的需求:求1-100的和、累加10次输入的数字的和、录入3名学员信息、存储5门课程成绩……,上面的需求都是可以明确确切的循环次数,故而优先用for循环。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: educoderjava入门循环结构是指在Java编程语言中,使用循环结构来实现重复执行某段代码的功能。循环结构包括for循环、while循环和do-while循环,它们可以帮助我们简化代码,提高效率。在Java编程中,循环结构是非常重要的基础知识,需要认真学习和掌握。 ### 回答2: educoderjava入门循环结构是教学平台educoder上的一门课程,旨在帮助初学者学习和掌握Java编程语言中的循环结构。 在Java编程语言中,循环结构是一种重要的程序控制结构,用于重复执行某段代码,直到满足某个条件时停止。educoderjava入门循环结构课程主要包括以下几个知识点: 1. for循环:for循环是最常用的一种循环结构,它通过设置循环变量的初始值、循环条件和每次循环后的操作,来控制循环的执行次数。 2. while循环:while循环会先判断循环条件是否满足,如果满足则执行循环体内的代码,然后再次判断条件,直到条件不满足时停止循环。 3. do-while循环:do-while循环先执行一次循环体内的代码,然后再判断循环条件是否满足,如果满足则继续执行循环体内的代码,直到条件不满足时停止循环。 通过完成educoderjava入门循环结构课程中的练习和题目,学习者可以掌握循环结构的基本概念、语法和使用方法,并能够灵活运用循环结构解决实际问题。 总之,educoderjava入门循环结构课程是一门帮助初学者学习和掌握Java编程语言中循环结构的课程,通过完成练习和题目,学习者可以提高自己的编程能力。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值