循环结构-for,while,do-while

for,while,do-while

>完整的循环应该包含以下四个部分:

初始化语句:初始化工作,在循环体开始之前执行

条件表达式:一个boolean表达式,决定是否执行循环体

循环体:反复执行的部分

循环变量控制语句(迭代语句):在循环体执行完之后执行,然后再去判断循环条件,一般用来控制循环条件中的变量,使循环在合适的时候结束

###for循环
>格式

        for(初始化表达式;条件表达式;循环变量控制语句){
        循环体语句;
        }

特殊格式
 
        for(;;){
        
        }
>for运行的顺序:
        
        1.执行初始化表达式,只执行一次,通常是定义循环变量语句
        2.判断循环条件:为真就往下执行;为假就结束循环
        3.执行循环体语句
        4.执行循环变量控制语句,一般是循环变量的自增或自减
        5.回到第2步,重复这个过程,直到为假时结束
>for循环注意事项:

        1.循环变量通常定义为int型,因为最常用的就是int型
        2.循环条件判断的结果是boolean类型值
        3.小括号中的分号不能写成中文的分号
        4.如果循环体只有一条语句的话,可以省略大括号,但建议写全
        5.循环变量控制语句不必每次改变1,根据情况,可以是任意值


###While循环
>格式

    [初始化语句]
    while(条件表达式){
    循环体语句;
    [循环变量控制语句]
    }

特殊格式

    while(true){
        if(...){//退出循环;break}
        }
>执行流程:

    1.执行初始化语句(如果有的话)
    2.判断条件表达式真假:如果真,往下执行;如果假,结束循环
    3.执行循环体语句
    4.执行循环变量控制语句(如果有的话)
    5.返回第2步,重复执行,直到条件为假,结束循环


>循环变量的使用问题

        for循环的循环变量,一般情况下在循环外是不能访问到的,
        因为它的作用域是在for循环的{}之内,
        但是可以通过把循环变量定义在外边来实现这个功能;
        或者定义计数器
        for(int i = 0;i<10;i++){
        ...
        }
        System.out.println(i);//NG报错
        
        /*正确模式
        int i = 0;
        for(;i<10;i++){
        ...
        }
        System.out.println(i);//OK
        */
#

        while循环本身就把循环变量定义在循环之外,所以没有这个问题
        int i = 0;
        while(i<10){
            ...
        i++;
        }
        System.out.println(i);

>for 和 while的应用场景

    for循环和while循环一般情况下是可以互换的.
    1.当明确知道循环的范围的时候,通常使用for
    2.当不明确循环次数的时候,for和while都可以,通常使用while

###do-While循环

    [初始化语句]
    do    {
    循环体语句;//至少被执行一次
    [循环变量控制语句]
    }while(条件表达式);
>eg1:
 
     //在控制台上依次打印1-10
         public class PrintDemo{
            public static void main(String[] args){
                for(int i = 1;i<=10;i++){
                    System.out.println(i);
                }
            }
        }

>eg2:
 
    //求1-10的和
         public class SumDemo{
            public static void main(String[] args){
                int sum=0;
                for(int i = 1;i<=10;i++){
                    sum+=i;                    
                }
                System.out.println(sum);
            }
            
        }
    
>eg3:
    
    //求水仙花数:位数,各个位上数字的立方和等于这个数本身,例:153

        public class FlowerDemo{
            public static void main(String[] args){
                int sum=0;
                for(int i = 100;i<=999;i++){
                    int bai = i / 100;
                    int shi = i /10 %10;
                    int    ge = i %100 %10;
                        if(bai*bai*bai+shi*shi*shi+ge*ge*ge==i){
                            System.out.println(i);
                        }            
                }                
            }            
        }
>eg4:

    //统计1000以内,同时是3,5,7的倍数的数有多少个?
      /*
       在1-100之间,若是3的倍数,则在它之后输出中文“三”,
      若是5的倍数,则在它之后输出中文“五”,
       若是7的倍数,则在它之后输出中文“七”
    */

    public class Multiple_3_5_7{
    public static void main(String[] args){
        for(int i= 1;i<=100;i++ ){
            System.out.print(i);
            if (i % 3 == 0){
                System.out.print(" 三 ");
            }    
            
            if(i % 5 == 0){
                    System.out.print("五");
                }
            if(i % 7 == 0){
                    System.out.print("七");                        
            }System.out.println("");
        }
    }
}
原文地址:https://www.cnblogs.com/leo9257/p/8733664.html