三种循环的运用及break和continue的区别及练习代码

三种循环的运用及break和continue的区别

while是最基本的循环

 

语法结构:

while(布尔表达式){

//循环内容

}

  • 只要布尔表达式为true,循环就会一直执行下去。

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

  • 少部分情况需要循环一直执行,比如服务器的请求响应监听等。

  • 循环条件一直为true就会造成无限循环[死循环],我们的正常业务编程中要尽量避免死循环。会影响程序性能或者造成程序卡死崩溃!

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

    package Struct;

    public class WhileDemo02 {
       public static void main(String[] args) {

           //计算1+2+3+4....+100=?
           int i = 0;
           int sum = 0;
           while(i<=100){
               sum = sum+i;
               i++;
               System.out.println(sum);//打印计算过程
          }
           System.out.println(sum);//输出结果5050
      }
    }

 

do ......while循环

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

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

 

语法结构:

do{

//代码语句

}while(布尔表达式);

 

 练习代码

 

package com.chen.www.struct;
public class WhileDemo01 {
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总是保证循环体会被至少执行一次!这是它们的主要差别。

 

for循环

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

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

for循环执行的次数是在执行前就确定的。

 

语法结构:

for(初始化;布尔表达式;更新){

//代码语句

}

  • while与for循环

package Struct;

public class ForDemo01 {
  public static void main(String[] args) {
      int a = 0;//初始化值
      while(a<=100){//条件判断
          System.out.println("a="+a);//循环体
          a+=2;//迭代

      }
      System.out.println("while循环结束");

      //初始化值;条件判断;迭代
      for (int i= 0;i<=100;i+=2){
          System.out.println("i="+i);//循环体

      }
      System.out.println("for循环结束");
  }
}
  • 练习1:计算0到100之间的奇数和偶数的和

package Struct;

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++) {//快捷生成for循环 “100.for”

           if (i % 2 == 0){//i膜2余数等于0则为偶数,否则为奇数
               oddSum += i;//i=oddSum+i
          }else{
               evenSum+=i;//i=evenSum+i
          }

      }
       System.out.println("输出偶数和"+oddSum);//2550
       System.out.println("输出奇数和"+evenSum);//2500
  }
}

 

  • 练习2:用while或for循环输出1-1000之间能被5整除的数,并且每行输出3个

 

package Struct;

public class ForDemo03 {
   public static void main(String[] args) {
       //练习2:用while或for循环输出1-1000之间能被5整除的数,并且每行输出3个

       for (int i = 0; i <= 1000; i++) {//1000.for
           if (i%5==0){
               System.out.print(i+"\t");//输出结果i+空格
          }
           if (i%15==0){
               System.out.println();//换行
          }
      }
       //println 输出完会换行
       //print 输出完不会换行


  }
}

 

  • 练习3:打印九九乘法表

     

package Struct;

public class ForDemo04 {

   public static void main(String[] args) {

       //练习3:打印九九乘法表
       /**
        * 1*1=1
        * 2*1=2   2*2=4
        * 3*1=3   3*2=6 3*3=9
        * 4*1=4   4*2=8 4*3=12 4*4=16
        * 5*1=5   5*2=10 5*3=15 5*4=20 5*5=25
        * 6*1=6   6*2=12 6*3=18 6*4=24 6*5=30 6*6=36
        * 7*1=7   7*2=14 7*3=21 7*4=28 7*5=35 7*6=42 7*7=49
        * 8*1=8   8*2=16 8*3=24 8*4=32 8*5=40 8*6=48 8*7=56 8*8=64
        * 9*1=9   9*2=18 9*3=27 9*4=36 9*5=45 9*6=54 9*7=63 9*8=72 9*9=81
        */
       /**步骤
        * 1、先打印第一列
        * 2、把固定的1再用一个循环包裹起来,将1用变量替换掉
        * 3、去掉重复项,i <= j
        */

       for (int j = 1; j <= 9; j++) {
           for (int i = 1; i <= j; i++) {
               // \t加一个空格,这里采用不换行的print来输出
               System.out.print(j+"*"+i+"="+(j*i)+"\t");
          }
           //换行
           System.out.println();
      }


  }
}

 

  • 练习4:打印一个5行的三角形

 

package Struct;

public class TextDemo01 {
   public static void main(String[] args) {
       //打印三角形 5行(练习一个星期,每晚理解性练习一遍)
        /*打印效果:
              *
             ***
            *****
           *******
          *********
        */
       for (int i = 1; i <= 5; i++) {
           //当j大于等于i时,打印一个空格,j-1
           for (int j = 5; j >= i; j--) {
               System.out.print(" ");
          }
           //当j小于等于i时,打印一个*,j+1
           for (int j = 1; j <= i; j++) {
               System.out.print("*");
          }
           //当j小于i时,输出一个*,j+1
           for (int j = 1; j < i; j++) {
               System.out.print("*");
          }
           //换行
           System.out.println();          
          }
      }
  }

 

增强for循环(初识数组)

 

练习代码:

package Struct;

public class ForPlusDemo05 {
   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){//将从numbers数组中每一次取出来的值,都赋值给x
           System.out.println(x);//输出打印x
      }
  }
}

 

break和continue

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

continue语句在循环体中,用于终止某次循环过程,即跳过循环尚未执行的语句,接着进行下一次是否执行循环的判定。

break练习代码

package Struct;

public class BreakDemo {
   public static void main(String[] args) {
       int i = 0;
       while (i<100){
           i++;
           if (i==50){
               //break强制停止循环
               break;
          }
           System.out.println(i);//输出结果1-49,当i等于50的时候整个循环就停止了
      }
  }
}

 

continue练习代码

package Struct;

public class ContinueDemo {
   public static void main(String[] args) {
       int i = 0;
       while(i<100){
           i++;
           if (i==20){
               System.out.println();
               continue;//用来跳过某些特定情况
          }
           //输出结果1-100,没有输出20这个数,当i等于20的这次循环被跳过了
           System.out.println(i);
      }
  }
}

 

 综合小练习:

package struct;

import java.util.Scanner;

public class IfDemo01 {
public static void main(String[] args) {

//芝麻开门小程序
Scanner s = new Scanner(System.in);
System.out.print("请输入口令:");
String str = s.nextLine();
int i = 3;
while (i>0){
if (str.equals("芝麻开门")){
System.out.print("“"+str+"“"+"........");
System.out.print("口令正确!");
break;
}else{
System.out.println("口令输入错误!您还有"+i+"次机会");
System.out.print("请重新输入:");
//再次输入
str = s.nextLine();
}
i--;
}
System.out.println("对不起您已经输错三次口令,系统已锁定!");
s.close();
}
}

 

posted @ 2021-02-27 16:02  恶的反思  阅读(377)  评论(0)    收藏  举报