2021-03-13

循环结构

  • while循环

    • while是最基本的循环,它的结构为:

      while(布尔表达式){
          //循环内容
      }
      
    • 只要布尔表达式为true,循环就会一直执行下去。

    • 我们大多数情况是会让循环停止下来的,我们需要一个让表达式失效的方式来结束循环。

      package com.wang.base.com.wang.structure;
      
      public class WhileDemo01 {
          public static void main(String[] args) {
      
              //输出1-100
      
              int i =0;
      
              while (i<100){
                  i++;
                  System.out.println(i);
              }
          }
      }
      
      
    • 少部分情况需要循环一直执行,比如服务器的请求响应监听等。

      package com.wang.base.com.wang.structure;
      
      public class WhileDeom02 {
          public static void main(String[] args) {
              //洗循环
              while (true){
                  //等待客户端连接
                  //定时检查
                  //......
              }
          }
      }
      
      
    • 循环条件一直为true就会造成无限循环【死循环】,我们正常的业务编程中应该尽量避免死循环。会影响程序性能或者造成程序卡死崩溃!

    • 思考:计算1+2+3+…+100=?

      package com.wang.base.com.wang.structure;
      
      public class WhileDemo03 {
          public static void main(String[] args) {
              //计算1+2+3+...+100=?
      
              //高斯的故事
      
              int i =0;
              int sum =0;
      
              while (i<=100){
                 sum = sum + i;
                 i++;
              }
              System.out.println(sum);
          }
      }
      
      
  • do…while循环

    • 对于 while 语句而言,如果不满足条件,则不能进入循环。但有时候我们需要即使不满足条件,也至少执行一次。

    • do…while 循环和 while 循环相似,不同的是,do…while 循环至少会执行一次。

      do{
          //代码语句
      }while(布尔表达式)
      package com.wang.base.com.wang.structure;
      
      public class DoWhileDemo01 {
          public static void main(String[] args) {
              int i =0;
              int sum =0;
              do {
                  sum = sum +i;
                  i++;
              }while (i<=100);
      
              System.out.println(sum);
          }
      }
      
      
    • while 和 do-while 的区别:

      • while 先判断后执行。do.while是先执行后判断!

      • do…while宗师保证循环体会被至少执行一次!这是他们的主要差别。

        package com.wang.base.com.wang.structure;
        
        public class DoWhileDemo02 {
            public static void main(String[] args) {
                int i = 0;
                while (i<0){
                    System.out.println(i);
                    i++;
                }
                System.out.println("=================");
                do {
                    System.out.println(i);
                    i++;
                }while (i<0);
            }
        }
        
        
  • for循环

    • 虽然所有循环结构都可以用 while 或者 do…while表示,但 Java 提供了另一种语句——for循环,是一些循环结构变得更加简单,

    • for循环语句是只是迭代的一种通用结构,是最有效、最灵活的循环结构。

    • for循环执行的次数是在执行前就确定的。语法格式如下:

      for(初始化;布尔表达式;更新){
          //代码语句
      }
      
      package com.wang.base.com.wang.structure;
      
      public class ForDemo01 {
          public static void main(String[] args) {
              int i =1;
      
              while (i<=100){ //条件判断
                  System.out.println(i); //循环体
                  i+=2; //迭代
              }
              System.out.println("while循环结束!");
      
              //初始化//条件判断//迭代
              for (int a =0;a<=100;a++){
                  System.out.println(a);
              }
              System.out.println("for循环结束!");
      
              for (int i1 = 0; i1 < 100; i1++) {  //快捷键100.for + 回车
      
              }
      
              /*
              关于 for 循环有以下几点说明:
      
              最先执行初始化步骤,可以声明一种类型,但可初始化一个或多个循环控制变量,也可以是空语句
              然后,检测布尔表达式的值,如果为true,循环体执行,如果为false,循环终止,开始执行循环体后面的语句
              执行一次循环后,更新循环控制变量(迭代因子控制循环变量的增减)。
              再次检测布尔表达式,循环执行上面的过程。
               */
              //死循环
              for (; ; ){
                  
              }
          }
      }
      
      
    • 练习1:计算0到100之间的奇数的和、偶数的和

      package com.wang.base.com.wang.structure;
      
      public class ForDemo02 {
          public static void main(String[] args) {
              //练习1:计算0 到100 之间奇数的和、偶数的和
      
              int oddsum = 0;
              int evensum = 0;
      
              for (int i = 0; i <= 100; i++) {
                  if (i%2!=0){  //奇数
                      oddsum+=i; //oddsum = oddsum + i;
                  }else {  //偶数
                      evensum+=i;
                  }
              }
      
              System.out.println("奇数的和:"+oddsum);
              System.out.println("偶数的和:"+evensum);
      
          }
      }
      
      
    • 练习2:用while或for循环输出1-1000之间能被5整除的数,并且每行输出3个

      package com.wang.base.com.wang.structure;
      
      public class ForDemo03 {
          public static void main(String[] args) {
              //练习2:用while或for循环输出1-1000之间能被5整除的数,并且每行输出3个
      
              for (int i = 0; i <= 1000; i++) {
                  if (i%5==0){
                      System.out.print(i+"\t");
                  }
                  if (i%(5*3)==0){  //每行
                      System.out.println();
                      //System.out.print("\n");
                  }
      
              }
      
              //println 输完完全换行
              //print 输出完不会换行
          }
      }
      
      
    • 打印九九乘法表

      package com.wang.base.com.wang.structure;
      /*
      1*1=1
      1*2=2	2*2=4
      1*3=3	2*3=6	3*3=9
      1*4=4	2*4=8	3*4=12	4*4=16
      1*5=5	2*5=10	3*5=15	4*5=20	5*5=25
      1*6=6	2*6=12	3*6=18	4*6=24	5*6=30	6*6=36
      1*7=7	2*7=14	3*7=21	4*7=28	5*7=35	6*7=42	7*7=49
      1*8=8	2*8=16	3*8=24	4*8=32	5*8=40	6*8=48	7*8=56	8*8=64
      1*9=9	2*9=18	3*9=27	4*9=36	5*9=45	6*9=54	7*9=63	8*9=72	9*9=81
      
       */
      
      public class IfDemo04 {
          public static void main(String[] args) {
              //打印九九乘法表
              //1.我们先打印第一列
              //2.我们把固定的1再用一个循环包起来
              //3.去掉重复项  i<=j
              //4.调整样式
              for (int i = 1; i <=9; i++) {
                  for (int j = 1; j <= i; j++) {
                      System.out.print(j+"*"+i+"="+(i*j) + "\t");
                  }
                  System.out.println();
      
              }
          }
      }
      
      
  • 在Java5中引用了一种主要用于数组的增强for循环

    • 这里我们先只是见一面,做个了解,之后数组我们重点使用

    • Java5 引入了一种主要用于数组或结合的增强型 for 循环。

    • Java 增强for 循环语法格式如下:

      for(声明语句:表达式)
      {
          //代码句子
      }
      
    • 声明语句:声明新的局部变量,该变量的类型必须和数组元素的类型匹配。其作用域限定在循环语句块,其值与此时数组元素的值相等。

    • 表达式:表达式是要访问的数组名,或者是返回值为数组的方法。

      package com.wang.base.com.wang.structure;
      
      public class IfDemo05 {
          public static void main(String[] args) {
              int [] numbers = {10,20,30,40,50};
      
              for (int i = 0;i<5;i++){
                  System.out.println(numbers[i]);
              }
              System.out.println("======================");
              //遍历数组的元素
              for (int x:numbers){
                  System.out.println(x);
              }
          }
      
      }
      
      

break continue

  • break 在任何循环语句的主体部分,均可用break控制循环的流程,break用于强行退出循环,不执行循环中剩余的语句。(break语句也在switch语句中使用)

    package com.wang.base.com.wang.structure;
    
    public class BreakDemo {
        public static void main(String[] args) {
            int i =0;
            while (i<100){
                i++;
                System.out.println(i);
                if (i==30){
                    break;
                }
            }
            System.out.println("123");
        }
    }
    
    
  • continue 语句用在循环语句体中,用于终止某次循环过程,即跳过循环体中尚未执行的语句,接着进行下一次是否执行循环的判定。

    package com.wang.base.com.wang.structure;
    
    public class ContinueDemo {
        public static void main(String[] args) {
            int i =0;
            while (i<100){
                i++;
                if (i%10==0){
                    System.out.println();
                    continue;
                }
                System.out.print(i);
            }
    
            //break 在任何循环语句的主体部分,均可用break控制循环的流程
            //break 用于强行退出循环,不执行循环中剩余的语句。(break语句也在switch语句中使用)
            //break 是终止  continue 是跳过
            //continue 语句用在循环语句中,用于终止某次循环过程,即跳过循环中尚未执行的语句,接着进行下一次是否进行循环的判定。
        }
    }
    
    
  • 关于goto关键字

    • gogo关键字很早就在程序设计语言中出现,尽管goto仍是Java的一个保留字,但并未在语言中得到正式使用;Java没有goto,然而,在break和continue这两个关键字的身上,我们仍然能看出一些goto的影子—带标签的break和continue
    • “标签”是指后面跟一个冒号的标识符,例如:label:
    • 对Java来说唯一用到标签的地方是在循环语句之前。而在循环之前设置标签的唯一理由是:我们希望在其中嵌套另一个循环,由于 break 和 continue 关键字通常只中断当前循环,但若随同标签使用,它们就会中断到存在标签的地方。
    package com.wang.base.com.wang.structure;
    
    public class LabelDeom {
        public static void main(String[] args) {
            //打印101~150之间的质数
            //质数是指在大于1的自然数中,除了1和它本身以外不在有其他因数的自然数
    
            int count = 0;
    
            //不建议使用!
            outer:for (int i =101;i<150;i++){
                for (int j = 2;j<i/2;j++){
                    if (i % j == 0){
                        continue outer;
                    }
                }
                System.out.print(i+" ");
            }
        }
    }
    
    

流程控制练习

打印一个三角形:

package com.wang.base.com.wang.structure;

public class TestDemo {
    public static void main(String[] args) {
        //打印三角形

        for (int i = 1; i <= 5; i++) {
            for (int j = 5; j >= i; j--) {
                System.out.print(" ");
            }
            for (int j = 1; j <= i; j++){
                System.out.print("*");
            }
            for (int j = 1;j < i; j++){
                System.out.print("*");
            }
            System.out.println();

        }
    }
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值