zoukankan      html  css  js  c++  java
  • Java-循环结构(for,while)

    循环语句:
    注意:循环一定要能确定循环从哪里开始,循环多少次,什么时候退出循环
    1.while循环

    a.语法格式:while(表达式){

          循环体语句;//反复做的事
         }
    规则:如果表达式为true,执行一次循环体语句,然后再次判断表达式,还为true,继续再执行一次循环体语句,之后继续再次判断表达式……只有当表达式为flase,不再执行循环体语句,直接退出循环,程序往下执行

    public class Test1 {
        public static void main(String[] args) {
            // TODO Auto-generated method stub
            int i=1;
            while(i<=5){
            System.out.println("今天据说有大雨");
            i++;
            }
        }
    }

    分析:第1次,i<=5 true,打印 i=2
             第2次,i<=5 true,打印 i=3
             第3次,i<=5 true,打印 i=4
             第4次,i<=5 true,打印 i=5
             第5次,i<=5 true,打印 i=6
             第6次,i<=5 flase,退出循环

    b.死循环:循环的表达式(条件)永远为true,一直没有办法终止循环

    循环的条件永远为true
    开发的时候,一般都建议尽量不要出现死循环现象
    while(true){
    system.out.println(“一直在执行”);
    }
    c.While循环最容易出现的错误,就是把while写成死循环,忘记加上控制循环次数变量的增量(i++或++i)
    int i=10;
    while(i<=20){
    System.out.println(“你好”);
    }
    产生死循环的原因:因为i的值,在循环中一直没有发生任何的改变,i一直都是10,永远都小于20,所以循环的条件都为true,循环会一直执行
    d.循环语句可以跟选择语句结合使用

    public class Test1 {
        public static void main(String[] args) {
            // TODO Auto-generated method stub
            //求100以内所有奇数的和
            int i=1;
            int sum=0;
            while(i<=100){
                if(i%2==1) {
                    sum=sum+i;
                }
                i++;
            }
            System.out.print(sum);
        }
    }

    e.在循环体中i++和++i,等价吗?
    eg:int i=1;
        while(i<=5){
        System.out.println(“今天据说有大雨”);
        ++i;
        }
    条件比较i的值,而不是表达式的值,所以使用i++和++i(都是i=i+1)两者等价
    2.do-while循环
    企业开发中使用较少
    语法格式:do{
                循环语句
                }while(表达式);
    语法规则:首先不管表达式true还是false,都立刻执行一次循环体语句,然后再去判断表达式,如果表达式为true,再执行循环体语句,反之退出循环
    特点:do-while不管表达式true还是false,必须要提前执行一次循环体语句
    eg:int i=10;
        do{
            System.out.println(“你好”);
        }while(i>=100);
    依然会执行一次输出语句

    public class Test1 {
        public static void main(String[] args) {
            // TODO Auto-generated method stub
            //求1+2+3+...+100的值
            int i=1;
            int sum=0;
            do {
                sum=sum+i;
                i++;
            }while(i<=100);
            System.out.print(sum);
        }
    }

    3.for循环
    企业开发中使用最为广泛
    a.语法格式:for(表达式1;表达式2;表达式3){
    循环体语句
    }
    eg:for(i=1;i<=5;i++){
        System.out.println(“i=”+i);
        }
    语法规则:首先执行表达式1(i=1),然后执行表达式2(i<=5)的判断,如果表达式2为true,执行循环体语句(System.out.println(“i=”+i);),之后执行表达式3(i++),然后再去执行表达式2(i<=5)的判断,如果表达式2为true,执行循环体语句,之后再去执行表达式3(i++)…知道表达式2为false,退出循环
    第1次:循环表达式1表达式2循环体语句表达式3
    第2次:              表达式2循环体语句表达式3
    第3次:              表达式2循环体语句表达式3
    ……
    当表达式2为false,退出循环
    分析for执行过程
    第1次:i=1  i<=5 true,打印,i++  i=2,
    第2次:       i<=5 true,打印,i++  i=3,
    第3次:       i<=5 true,打印,i++  i=4,
    第4次:         i<=5 true,打印,i++  i=5,
    第5次:         i<=5 true,打印,i++  i=6,
    第6次:         i<=5 false,退出for循环
    归纳:for循环中,表达式1—初赋值,表达式2—循环条件,表达式3—控制循环次数变量的增量(eg:i++)
    b.对比for循环和while循环
    while(表达式){
    循环体语句
    }
    eg:int i=1;
        while(i<=10){
        System.out.println(i);
        i++;
    }
    for(表达式1;表达式2;表达式3){
    循环体语句
    }
    eg:for(int i=1;i<=10;i++){
        System.out.println(i);
        }
    相同点:只有当表达式为true,才执行循环体
    不同点:for把整个控制循环体次数的条件,都纳入到语法结构for当中
    c.最简单的for的死循环
    for(;;){
    循环体语句
    }

    public class Test1 {
        public static void main(String[] args) {
            // TODO Auto-generated method stub
            //求3000以内所有的闰年
            for(int i=1;i<=3000;i++) {
                if((i%4==0 && i%100!=0)||i%400==0) {
                    System.out.println(i);
                }
            }
        }
    }

    4.退出循环
    break:直接退出循环
    continue:退出本次循环,继续下次循环

    public class Test1 {
        public static void main(String[] args) {
            // TODO Auto-generated method stub
            //i=6退出循环
            for(int i=1;i<=10;i++) {
                if(i==6) {
                    break;
                }
                System.out.println(i);
            }
        }
    }

    输入结果:1  2  3  4  5

    public class Test1 {
        public static void main(String[] args) {
            // TODO Auto-generated method stub
            for(int i=1;i<=10;i++) {
                if(i==6) {
                    continue;
                }
                System.out.println(i);
            }
        }
    }

    输入结果:1  2  3  4  5  7  8  9  10
    一旦执行continue,则本次循环后面的代码都不执行,直接进入到下次循环
    5.循环嵌套
    一个循环内部,又嵌套一个循环语句
    eg:for(int i=1;i<=3;i++){
            for(int j=1;j<=3;j++){
            System.out.println(i+”,”+j);
            }
    }
    外层循环执行一次,内层循环执行全部
    当i=1的时候,i<=3 true
    j=1,j<=3 true 输出 j++
    j=2,j<=3 true 输出 j++
    j=3,j<=3 true 输出 j++
    j=4,j<=3 false 退出内层循环 执行i++
    当i=2的时候…

  • 相关阅读:
    关于postman使用上发现的一点问题
    关于异步的处理方法
    关于console.log() 打印得引用类型得数据得相关问题
    使用electron将单页面vue webapp 打包成 PC端应用
    当后台只接受字符串得时候,在传输复杂得数据得时候会发生得问题
    默认事件
    事件冒泡
    offsetWidth clientWidth scrollWidth 三者之间的区别和联系
    事件获取目标 currentTarget target srcElement三者之间的区别和联系
    不支持模块化规范的插件可以使用import 导入的原因
  • 原文地址:https://www.cnblogs.com/lilyo/p/12792493.html
Copyright © 2011-2022 走看看