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

来源:互联网 发布:美工海报设计兼职 编辑:程序博客网 时间:2024/05/21 06:11

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,3            if(guess==0){                break;            }            if(guess>num){                System.out.println("太大了");            }else if(guess<num){                System.out.println("太小了");            }        }while(guess!=num); //2        if(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); //加数a            int b = (int)(Math.random()*100); //加数b            int 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);    }}
原创粉丝点击