栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Java常见循环结构

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Java常见循环结构

前言:

上一篇提到的三种结构分别为:

  1. 顺序结构:从上往下逐行执行,每句必走
  2. 分支结构:有条件的执行某语句一次,并非每句必走
  3. 循环结构:有条件的执行某语句多次,并非每句必走

  今天就来说说循环结构,因顺序结构的程序语句只能被执行一次,从而出现的循环结构来满足需求;如果您想要同样的操作执行多次,就需要使用循环结构以便解决编程中同样的代码做多次的问题。

Java中有三种主要的循环结构:

  • while 循环
  • do…while 循环
  • for 循环

循环:反复多次执行一段相同或相似的代码


 

while 循环

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

1)语法

while( 布尔表达式 ) {

//循环内容

}

2)执行过程:


    先判断boolean(布尔表达式 )的值,若为true则执行语句块,
    再判断boolean(布尔表达式 )的值,若为true则再执行语句块,
    再判断boolean(布尔表达式 )的值,若为true则再执行语句块,
    如此反复,直到boolean(布尔表达式 )的值为false时,while循环结束

注意:只要布尔表达式为 true,循环就会一直执行下去(即无限循环或死循环)。

3)循环三要素:
  1. 循环变量的初始化
  2. 循环的条件(以循环变量为基础作为判断条件)
  3. 循环变量的改变(向着循环的结束变)

程序演示

 //循环变量: 次数times
 // 1)int times=0;    //第一要素循环变量的初始化
 // 2)times<5;        //第二要素循环的条件(以循环变量为基础)
 // 3)times++;        //第三要素循环变量的改变(向着循环的结束变)
                      //times到5时结束
 
// 程序练习:输出5次"行动是成功的阶梯.


int times = 0;     //1.循环变量的初始化
while(times<5){    //2.循环的条件
    System.out.println("行动是成功的阶梯");
    times++;       //3.循环变量的改变
}
System.out.println("继续执行...");   

//输出结果为:
    行动是成功的阶梯
    行动是成功的阶梯
    行动是成功的阶梯
    行动是成功的阶梯
    行动是成功的阶梯  
    继续执行...

注意:循环变量:在整个循环过程中所反复改变的那个数


do…while 循环

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

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

注意:当第1要素与第3要素相同时,首选do...while(详情如下程序演示)

1)语法:


  do{
    语句块
  }while(boolean);


2)执行过程:


    先执行语句块,再判断boolean的值,若为true则
    再执行语句块,再判断boolean的值,若为true则
    再执行语句块,再判断boolean的值,若为true则
    再执行语句块,如此反复,直到boolean的值为false时,do...while循环结束

程序演示

package day04;
import java.util.Scanner;


//猜数字游戏
//先用while循环演示----1-3要素相同是什么意思.


public class Gueesing {
    public static void main(String[] args) {
        Scanner scan = new Scanner(System.in);
        int num = (int)(Math.random()*1000+1);   //1到1000之内的随机数
        System.out.println(num);                 //查看随即到的数
        System.out.println("猜吧!");

        int guess = scan.nextInt();              //第一要素

        while(guess!=num){                       //第二要素
            if(guess>num){
                System.out.println("太大了");
            }else{
                System.out.println("太小了");
            }
            System.out.println("猜吧!");

            guess = scan.nextInt();              //3.第三要素

        }
        System.out.println("恭喜你猜对了!");
    }
}


注意:这里的一三要素代码是相同的,这种情况就优先使用do...while循环结构
//--------------------------------------------------------

//以下是猜数字游戏do...while循环结构的程序


package day04;
import java.util.Scanner;
//猜数字游戏
public class Gueesing {
    public static void main(String[] args) {
        Scanner scan = new Scanner(System.in);
        int num = (int)(Math.random()*1000+1);       //1到1000之内的随机数
        System.out.println(num);                     //查看随机到的数
        int guess;
        do{
            System.out.println("猜吧!");

            guess = scan.nextInt();                 //第一和第三要素合一起,每次循环执行一次

            if(guess>num){
                System.out.println("太大了");
            }else if(guess 


for 循环

显然循环用 while 或者 do...while表示就能实现循环需求,为什么还出现一个for 循环呢?  

 因为Java 提供的另一种语句 —— for 循环,使一些循环结构变得更加简单。并且for结构:应用率最高,与次数相关的循环都使用它.

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

1)语法

for(要素1;要素2;要素3){
    语句块/循环体------------反复执行的代码 
  }

2)执行过程:


    要素1初始化--要素2条件判断--语句块执行--要素3改变

  • 最先执行 要素1初始化步骤。可以声明一种类型,但可初始化一个或多个循环控制变量,也可以是空语句(可以写在外边但分号必须要保留)。
  • 然后要素2条件判断,检测布尔表达式的值。如果为 true,循环体被执行。如果为false,循环终止,开始执行循环体后面的语句。
  • 执行一次循环后要素3改变,更新循环控制变量。
  • 再次检测布尔表达式。循环执行上面的过程。(直到为false,循环终止,开始执行循环体后面的语句。)

程序演示

for(int times=0;times<5;times++){
    System.out.println("行动是成功的阶梯");
}

//输出结果为:
    行动是成功的阶梯
    行动是成功的阶梯
    行动是成功的阶梯
    行动是成功的阶梯
    行动是成功的阶梯 

//for中的循环变量 times的作用域----仅在当前for中
   

注意:for中的循环变量num的作用域----仅在当前for中

当作用域重叠时,变量不能同名.


break 关键字

break 主要用在循环语句或者 switch 语句中,用来跳出整个语句块。

break 跳出最里层的循环,并且继续执行该循环下面的语句。

for(int num=1;num<=9;num++){
    if(num==4){ //在某种特定情况下,提前结束循环
        break; //跳出当前循环,当前循环结束
    }
    System.out.println(num+"*9="+num*9);
}


continue 关键字

跳过循环体中剩余语句而进入下一次循环-----------只能用在循环中

//输出9的乘法表,跳过能被3整除的
for(int num=1;num<=9;num++){
    if(num%3==0){
        continue; //跳过循环体中剩余语句而进入下一轮循环
    }
    System.out.println(num+"*9="+num*9);
}

嵌套循环
  • 循环中套循环,常常多行多列时使用,一般外层控制行,内层控制列

  • 执行规则:外层循环走一次,内层循环走所有次

  • 建议:嵌套层数越少越好,能用一层就不用两层,能用两层就不用三层

  • break只能跳出当前层循环

for(int num=1;num<=9;num++){ //控制行
    for(int i=1;i<=num;i++){ //控制列
      System.out.print(i+"*"+num+"="+i*num+"t"); //print():输出不换行
    }
    System.out.println(); //换行
}


总结
  • 三种结构如何选择:

    • 先看循环是否与次数相关:

      • 若相关-----------------------------直接上for

      • 若无关,再看要素1与要素3的代码是否相同:

      • 若相同-----------------------直接上do...while

      • 若不同-----------------------直接上while

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/992291.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号