当前位置: 代码迷 >> 综合 >> FUNDAMENTAL Unit04 循环结构(while、do-while、for)
  详细解决方案

FUNDAMENTAL Unit04 循环结构(while、do-while、for)

热度:93   发布时间:2023-12-11 15:12:41.0

1.循环:反复执行一段相同或相似的代码

2.循环三要素:

1)循环变量的初始化
2)循环的条件(以循环变量为基础)
3)循环变量的改变(向着循环的结束变)
循环变量:在循环过程中所改变的那个数

3.循环结构:

1)while:先判断后执行,有可能一次都不执行

while( boolean表达式 ) {语句块;
}

while语句的执行过程为,首先计算boolean表达式的值,而后进行判断,若值为true则执行语句块,语句块执行完后再次判断boolean表达式的值,如果为true则继续执行语句块,如此循环往复,直到boolean表达式的值为false时退出while循环而执行while之后的语句。

while语句的流程图如下图所示,需要注意的是,一般情况下,循环操作中会存在使得循环条件不满足的可能性,否则该循环将成为“死循环”。“死循环”意味着会一直执行循环体操作,循环后面的语句永远不会被执行,“死循环”在软件系统中是需要避免的。
这里写图片描述

2)do…while:先执行后判断,至少执行一次
第1要素与第3要素相同时首选

do {语句块
} while( boolean表达式 ) ;

do-while语句的执行过程为,先执行语句块,再判断boolean表达式,如果为true则再次执行语句块,如此循环往复,直到boolean表达式的值为false时止。也就是说,do-while语句,无论boolean表达式是否为true,都先执行一次语句块。

do-while语句的流程图如下图所示,与while语句一样,do-while语句也要避免“死循环”的发生。
这里写图片描述

3)for:应用率最高,固定次数循环

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

可以看出,for循环的三个表达式之间通过分号;进行分隔,其执行逻辑如下所示:
1.计算表达式1的值,通常为循环变量赋初值;
2.计算表达式2(表达式2为逻辑表达式)的值,即判断循环条件是否为真,若值为真则执行循环体一次(语句块),否则跳出循环;
3.执行循环体;
4.计算表达式3的值,此处通常写更新循环变量的赋值表达式;
5.计算表达式2的值,若值为true则执行循环体,否则跳出循环;
6.如此循环往复,直到表达式2的值为false。

for语句流程图如下图所示:
这里写图片描述

4.break:退出循环

continue:跳过循环体中剩余语句而进入下一次循环

while循环演示:

package day04;
//while的演示
public class WhileDemo {public static void main(String[] args) {/** 练习:* 1)输出10"行动是成功的阶梯"* 2)输出9的乘法表(正序19)* 3)输出9的乘法表(倒序91)* 4)输出9的乘法表(正序1/3/5/7/9)*   * 要求:*   任选其二写执行过程*//*int num=9;while(num>=1){System.out.println(num+"*9="+num*9);num--;}System.out.println("over");*//*int num=1;     //1.循环变量的初始化while(num<=9){ //2.循环的条件System.out.println(num+"*9="+num*9);num++;     //3.循环变量的改变}System.out.println("over");*//*int times=0;     //1.循环变量的初始化while(times<10){ //2.循环的条件System.out.println("行动是成功的阶梯");times++;     //3.循环变量的改变}System.out.println("over");*//** 执行过程:*          times=0* true 输出 times=1* true 输出 times=2* true 输出 times=3* true 输出 times=4* true 输出 times=5* true 输出 times=6* true 输出 times=7* true 输出 times=8* true 输出 times=9* true 输出 times=10* false while循环结束*/}
}

do while循环演示:

package day04;
import java.util.Scanner;
//猜数字小游戏
public class Addition {public static void main(String[] args) {Scanner scan = new Scanner(System.in);int num = (int)(Math.random()*1000+1); //1到1000之内的随机数System.out.println(num); //作弊int guess;do{System.out.println("猜吧!");guess = scan.nextInt(); //1,3if(guess==0){break;}if(guess>num){System.out.println("太大了");}else if(guess<num){System.out.println("太小了");}}while(guess!=num); //2if(guess==num){System.out.println("恭喜你,猜对了!");}else{System.out.println("下次再来吧!");}}
}

for循环演示

package day04;
//for的演示
public class ForDemo {public static void main(String[] args) {/*//累加1100的和,除了个位为3的int sum = 0;for(int num=1;num<=100;num++){if(num%10!=3){sum+=num;}}System.out.println("sum="+sum);*//*//累加1100的和,跳过个位为3的int sum = 0;for(int num=1;num<=100;num++){if(num%10==3){continue;}sum += num;}System.out.println("sum="+sum);*//** sum=0* num=1 sum=1* num=2 sum=1+2* num=3* num=4 sum=1+2+4* ...* num=13 *//*int sum = 0;for(int num=1;num<=100;num++){if(sum>=4000){break;}sum += num;}System.out.println("sum="+sum);*//*int sum = 0;int num=1;for(;num<=100;num++){sum += num;}System.out.println("sum"+sum);*//*int sum = 0;for(int num=1;num<=100;){sum += num;num++;}System.out.println("sum"+sum);*//*for(;;){ //死循环System.out.println("我要学习...");}*//*for(int i=0,j=6;i<5;i+=2,j-=2){}*//** i=0,j=6* i=2,j=4* i=4,j=2* i=6,j=0*//*//累加:1+2+3+4+...+99+100=?int sum = 0; //和for(int num=1;num<=100;num++){sum += num;}System.out.println("sum"+sum);*//** sum=0* num=1 sum=1* num=2 sum=1+2* num=3 sum=1+2+3* num=4 sum=1+2+3+4* num=5 sum=1+2+3+4+5* ...* num=100 sum=1+2+3+4+5+...+100* num=101*//*for(int times=0;times<10;times++){System.out.println("行动是成功的阶梯");}for(int num=1;num<=9;num++){System.out.println(num+"*9="+num*9);}*/}
}

随机加法计算器

package day04;
import java.util.Scanner;
//随机加法运算器
public class Addition {public static void main(String[] args) {Scanner scan = new Scanner(System.in);int score = 0; //得分for(int i=1;i<=10;i++){ //10次int a = (int)(Math.random()*100); //加数aint b = (int)(Math.random()*100); //加数bint result = a+b; //存和System.out.println("("+i+")"+a+"+"+b+"=?"); //1.出题System.out.println("算吧!");int answer = scan.nextInt(); //2.答题if(answer==-1){System.out.println("下次再来吧!");break;}if(answer==result){ //3.判题System.out.println("答对了");score += 10; //答对一题加10分}else{System.out.println("答错了");}}System.out.println("score="+score);}
}