流程控制语句--循环结构

时间:2022-09-08 16:55:47

流程控制语句:可以控制程序的执行流程。

分类:

                   顺序结构

                   选择结构

                   循环结构

循环结构

循环语句:for循环,while循环,do...while循环。

for循环

  for循环格式:

                   for(初始化语句;判断条件语句;控制条件语句) {

                            循环体语句;

                   }

  执行流程:

                            A:执行初始化语句

                            B:执行判断条件语句,看其返回值是true还是false

                                     如果是true,就继续执行

                                     如果是false,就结束循环

                            C:执行循环体语句;

                            D:执行控制条件语句

                            E:回到B继续。

                           

  注意事项:

                   A:判断条件语句无论简单还是复杂结果是boolean类型。

                   B:循环体语句如果是一条语句,大括号可以省略;如果是多条语句,大括号不能省略。建议永远不要省略。

                   C:一般来说:有左大括号就没有分号,有分号就没有左大括号

练习:

请在控制台输出10"HelloWorld"

例:

for(intx=1;x<=10;x++) {

    System.out.println("HelloWorld");

}

练习:

求出1-10之间数据之和

例:

//定义第一个加数

int sum = 0;

for(int x=1; x<=10; x++) {

    sum = sum + x;

    }

System.out.println("1-10之和是:"+sum);

练习:

练习1

1-100之和

例:

//定义第一个加数

int sum = 0;

for(int x=1; x<=100; x++) {

    sum += x;

    }

System.out.println("1-100之和是:"+sum);

练习2

求出1-100之间偶数和

例:

//定义第一个加数

int sum2 = 0;

for(intx=1; x<=100;x++) {

    if(x%2 == 0) {

        sum2 += x;

    }

}

System.out.println("1-100偶数之和是:"+sum2);

练习3

求出1-100之间奇数和

例:

//定义第一个加数

int sum2 = 0;

for(intx=1; x<=100;x++) {

    if(x%2 != 0) {

        sum2 += x;

    }

}

System.out.println("1-100奇数之和是:"+sum2);

练习4

5的阶乘。

例:

//定义最终结果变量

int jc = 1;

for(intx=2; x<=5; x++) {

    jc *=x;

}

System.out.println("1-5的阶乘是:"+jc);

练习5

在控制台输出所有的”水仙花数”

所谓的水仙花数是指一个三位数,其各位数字的立方和等于该数本身,如:153

例:

//三位数其实是告诉了我们范围。

for(intx=100; x<1000;x++) {

    int ge = x%10;

    int shi = x/10%10;

    int bai = x/10/10%10;

   

    //ge*ge*ge+shi*shi*shi+bai*bai*bai和该数据比较

    if(x == (ge*ge*ge+shi*shi*shi+bai*bai*bai)) {

        //如果相同,就把该数据在控制台输出。

        System.out.println(x);

    }

}

练习6

统计”水仙花数”共有多少个

例:

//定义统计变量,初始化值是0

int count = 0;

//三位数告诉了我们范围,用for循环就可以搞定

for(intx=100; x<1000;x++) {

    //获取每一个三位数的个,十,百的数据

    int ge = x%10;

    int shi = x/10%10;

    int bai = x/10/10%10;

    //按照要求进行判断

    if(x == (ge*ge*ge+shi*shi*shi+bai*bai*bai)) {

        //如果满足要求就计数。

        count++;

    }

}

System.out.println("水仙花数共有"+count+"");

练习7

请在控制台输出满足如下条件的五位数

        个位等于万位

        十位等于千位

        个位+十位+千位+万位=百位

例:

//五位数就告诉了我们范围。

for(intx=10000; x<100000;x++) {

    //分解每一个五位数的个,十,百,千,万位上的数据

    int ge = x%10;

    int shi = x/10%10;

    int bai  = x/10/10%10;

    int qian = x/10/10/10%10;

    int wan = x/10/10/10/10%10;

    //按照要求进行判断即可

if((ge==wan) && (shi==qian) && (ge+shi+qian+wan==bai)) {

        System.out.println(x);

    }

}

练习8

请统计1-1000之间同时满足如下条件的数据有多少个:

            3整除余2

            5整除余3

            7整除余2

例:

//定义统计变量,初始化值是0

int count = 0;

//1-1000之间是一个范围,用for很容易就可以实现。

for(intx=1; x<=1000;x++) {

    if(x%3==2 &&x%5==3 && x%7==2) {

        count++;

        System.out.println(x);

    }

}

//输出数据

System.out.println("满足这样条件的数据共有:"+count+"");

 

 

while循环

  while循环的基本格式:

                   while(判断条件语句) {

                            循环体语句;

                   }

  扩展格式:

                   初始化语句;

             while(判断条件语句) {

                             循环体语句;

                             控制条件语句;

                   }

         通过这个格式,我们就可以看到其实和for循环是差不多的。

                   for(初始化语句;判断条件语句;控制条件语句) {

                            循环体语句;

                   }

练习1

输出10"HelloWorld"

例1:

//for语句版

for(intx=0; x<10; x++) {

    System.out.println("HelloWorld");

}

例2:

//while语句版

int x=0;

while(x<10) {

    System.out.println("HelloWorld");

    x++;

}

练习2

求出1-100之和

例1:

//for语句版

int sum = 0;

for(intx=1; x<=100;x++) {

    sum+=x;

}

System.out.println("sum:"+sum);

例2:

//while语句版

int sum2 = 0;

int y=1;

while(y<=100) {

    sum2+=y;

    y++;

}

System.out.println("sum2:"+sum2);

练习3

100~1000统计水仙花数有多少个

例1:

//for语句版

int count = 0;

for(intx=100; x<1000;x++) {

    int ge = x%10;

    int shi = x/10%10;

    int bai = x/10/10%10;

    if((ge*ge*ge+shi*shi*shi+bai*bai*bai) == x) {

        count++;

    }

}

System.out.println("count:"+count);

例2:

//while语句版

int count2 = 0;

int y = 100;

while(y<1000) {

    int ge = y%10;

    int shi = y/10%10;

    int bai = y/10/10%10;

    if((ge*ge*ge+shi*shi*shi+bai*bai*bai) == y) {

        count2++;

    }

    y++;

}

System.out.println("count2:"+count2);

 

  while循环和for循环的区别?

使用区别:如果你想在循环结束后,继续使用控制条件的那个变量,用while循环,否则用for循环。不知道用for循环。

因为变量及早的从内存中消失,可以提高内存的使用效率。

其实还有一种场景的理解:

         如果是一个范围的,用for循环非常明确。

         如果是不明确要做多少次,用while循环较为合适。

                举例:吃葡萄。

//for循环实现

for(intx=0; x<10; x++) {

    System.out.println("学习Java技术哪家强,中国北京传智播客");

}

//这里不能在继续访问了x

//System.out.println(x);

//while循环实现

int y = 0;

while(y<10) {

    System.out.println("学习Java技术哪家强,中国北京传智播客");

    y++;

}

//这里是可以继续访问的y

System.out.println(y);

 

练习:

我国最高山峰是珠穆朗玛峰:8848m,我现在有一张足够大的纸张,厚度为:0.01m。请问,我折叠多少次,就可以保证厚度不低于珠穆朗玛峰的高度?

例:

//定义一个统计变量,默认值是0

int count = 0;

//最高山峰是珠穆朗玛峰:8848m这是最终的厚度

//我现在有一张足够大的纸张,厚度为:0.01m这是初始厚度

//为了简单,我把0.01变成1,同理8848就变成了884800

int end = 884800;

int start = 1;

while(start<end) {

    //只要每次变化的厚度没有超过珠穆朗玛峰的高度,就折叠,统计变量++

    count++;

    //折叠一次有什么变化呢?就是厚度是以前的2倍。

    start *= 2;

    System.out.println(""+count+"次厚度是"+start);

}

//输出统计变量。

System.out.println("要叠"+count+"");

 

do...while循环

  do...while循环的基本格式:

                   do{

                            循环体语句;

                   }while(判断条件语句);

  扩展格式;

                   初始化语句;

                   do{

                            循环体语句;

                            控制条件语句;

                   }while(判断条件语句

示例1:输出10次HelloWorld

int x = 0;

do {

    System.out.println("HelloWorld");

    x++;

}while(x<10);

示例2:求和1-100

int sum = 0;

int a = 1;

do {

    sum += a;

    a++;

}while(a<=100);

循环语句的区别:

                   do...while循环至少执行一次循环体。

                   而for,while循环必须先判断条件是否成立,然后决定是否执行循环体语句。

那么,我们一般使用哪种循环呢?

                   优先考虑for,其次考虑while,最后考虑do...while

注意死循环:

                   A:一定要注意控制条件语句控制的那个变量的问题,不要弄丢了,否则就容易死循环。

                   B:两种最简单的死循环格式

                            while(true){...}

                            for(;;){...}