Java循环结构 1

简介: Java循环结构

1 循环结构

1.1 为什么需要循环结构

提示:张浩的 Java 考试成绩只有 80 分,没有达到自己的目标。为了表明自己勤奋学习的决心,他决定编程写 100 遍“好好学习,天天向上!”

经过努力,张浩终于编写完了程序,如示例 1 所示。


示例1


package cn.jbit.loops1;


public class DoWithoutWhile {


  /*

   * 不用while打印100遍

   */

  public static void main(String[] args) {

     System.out.println("第1遍写:好好学习,天天向上!");

     System.out.println("第2遍写:好好学习,天天向上!");

     System.out.println("第3遍写:好好学习,天天向上!");

     System.out.println("第4遍写:好好学习,天天向上!");

     //省略91行语句


System.out.println("第96遍写:好好学习,天天向上!");


System.out.println("第97遍写:好好学习,天天向上!");

     System.out.println("第98遍写:好好学习,天天向上!");

     System.out.println("第99遍写:好好学习,天天向上!");

     System.out.println("第100遍写:好好学习,天天向上!");


  }

}


687cba2d66c0465e85d6525ea2d64b7e.png

程序运行结果如图 5.1 所示。


图 5.1 示例 1 的运行结果


张浩看到这个结果后很高兴,将这段代码拿给老师看。老师看了以后很赞赏张浩努力学习的精神,但给张浩提出了一个问题:如果要写 10000 遍该如何做呢?张浩觉得写 100 遍就花费了很长时间,更何况写 10000 遍呢?张浩去请教了师兄。师兄告诉他可以用循环结构,这样写 100 遍的代码如示例 2 所示。


示例2


package cn.jbit.loops1;


public class WhileDemo1 {


  /*

   * while打印100遍

   */

  public static void main(String[] args) {

     int i = 1;

     while(i <= 100){

        System.out.println("第" +i+ "遍写:好好学习,天天向上!");

        i++;     // i = i + 1

     }

  }

}


通过运行,示例 2 的结果和示例 1 的结果相同。如果要写 10000 遍代码,只需改变一条语句即可,如示例 3 所示。


示例3


package cn.jbit.loops1;


public class WhileDemo1 {


  /*

   * while打印100遍

   */

  public static void main(String[] args) {

     int i = 1;

     while(i <= 10000){

        System.out.println("第" +i+ "遍写:好好学习,天天向上!");

        i++;

     }

  }

}

98229fdd89f7425d87a70f55fbc93a0f.png


程序运行结果如图 5.2 所示。


图 5.2 示例 3 的运行结果


与示例 1 相比,示例 2 和示例 3 中处理问题的方式更简单。下面学习循环结构。


1.2 什么是循环结构

通过上面的示例,相信大家对循环有了一定的认识。循环就是重复地做,如 5.1.1 节的示例就是重复地写"好好学习,天天向上!"。


其实,在日常生活中有很多循环的例子,如打印 50 份试卷、在 400m 跑道上进行 10000m 赛跑、做 100 道编程题、滚动的车轮等,如图 5.3 所示。

be379d86753841e1b488f1f44504c410.png

b78d66b5ef924bcb9c52652b36c702ac.png


图 5.3 生活中的循环


这些循环结构有哪些共同点呢?


我们可以从循环条件和循环操作两个角度考虑,即明确一句话 “在什么条件成立时不断地做什么事情”。


分析:


打印 50 份试卷:


循环条件——只要打印的试卷份数不足 50 份就继续打印。


循环操作----打印 1 份试卷,打印总份数加 1 。


万米赛跑:


循环条件——跑过的距离不足 10000m 就继续跑。


循环操作——跑 1 圈,跑过的距离增加 400m 。


做 100 道编程题:


循环条件——做编程题不足 100 道就继续做。


循环操作——完成 1 道编程题,完成题目的总数量增加 1 。


滚动车轮:


循环条件——没有到目的地就继续。


循环操作——车轮滚动 1 圈,离目的地更近一点。


由以上分析可以看出,所有的循环结构都有这样的特点:首先,循环不是无休止进行的,满足一定条件的时候循环才会继续,称为"循环条件",循环条件不满足的时候,循环退出;其次,循环结构是反复进行相同的或类似的一系列操作,称为"循环操作",如图 5.4 所示。

77fb56ad41e540d5ba6fe2c8dc889ed3.png



2 while循环结构

2.1 什么是while循环结构

我们已经了解了循环结构的构成和特点,而程序中的循环结构是什么样的呢?


观察 5.1.1 节的示例 2, 其中使用了  While 循环结构。 Java 程序中的循环结构有三种实现方式: while 循环结构、 do-while 循环结构和 for 循环结构。本章我们学习前两种。


下面先介绍 while 循环结构,如表 5-1 所示。


表 5-1 while 循环结构


563111a1ca3948bb80cd542a590dbc7f.png

关键字while后小括号中的内容是循环条件。循环条件是一个表达式,它的值为boolean类型,即true或false,如i<=100。{}中的语句统称为循环操作,又称为循环体。


结合表5-1 , while循环结构的执行顺序一般如下。


(1) 声明并初始化循环变量。


(2) 判断循环条件是否满足,如果满足则执行循环操作;否则退出循环。


(3) 执行完循环操作后,再次判断循环条件,决定继续执行循环或退出循环。


结合流程图思考:如果第一次判断循环条件时就不满足,循环操作会不会被执行?


实际上,while循环结构如果第一次判断循环条件就不满足,则会直接跳出循环,循环操作一遍都不会执行。这是while循环结构的一个特点:先判断,后执行。


2.2 如何使用 while 循环结构



9d8219af3bd7445aa7cedca846978628.png


下面使用while循环结构实现打印50份试卷。根据前面的分析,打印50份试卷的流程图如图5.5所示。

370226e1a6ff4ea899452b7905a731d2.png



图5.5打印50份试卷的流程图


根据while循环结构的语法,可以得到如示例4所示的代码。


示例4


package cn.jbit.loops1;

import java.util.Scanner;

public class WhileDemo {

   /*

    * 如何使用while循环

    */

   public static void main(String[] args) {

       int count = 1;

       while(count <= 50){

           System.out.println("打印第" +count+ "份试卷");

           count++;

       }

   }

}


问题:为了帮助张浩尽快提高成绩,老师给他安排了每天的学习任务:上午阅读教材,学习理论部分;下午上机编程,掌握代码部分。老师每天检查学习成果,如果不合格,则继续进行。


分析:对上面的问题,循环条件:老师没有给出满意的评价,就要继续执行任务。循环操作:上午阅读教材,下午上机编程。通过从控制台输入y或n表示老师的评价是“合格”或“不合格”,根据这个条件决定是否执行循环操作。根据while循环的语法,可以得到如示例5所示的代码。


示例5


package cn.jbit.loops1;

import java.util.Scanner;

public class WhileDemo3 {

   /*

    * 如何使用while循环

    */

   public static void main(String[] args) {

       String answer; //标识是否合格

       Scanner input = new Scanner(System.in);

       System.out.print("合格了吗?(y/n):");

       answer = input.next();

       while(!"y".equals(answer)){

           System.out.println("上午阅读教材!");

           System.out.println("下午上机编程!\n");

           System.out.print("合格了吗?(y/n):");

           answer = input.next();

       }

       System.out.println("完成学习任务!");

   }

}


分析代码,可能会有以下问题。上一章学到了从控制台获得输入时需使用Scanner,为什么这里语法有变化呢?这是因为以前学的是从控制台获得一个整数,而这里需要从控制台获得一个字符串,将其保存在String类型的变量answer中,代码如下:


answer = input.next();


如何判断输入的字符串是不是"y" ?


回顾上一章,比较两个int类型或char类型变量是否相等,我们使用运算符"==”。这里,answer是String类型的变量,判断String类型变量是否相等通常采用下面的方法。


//判断 String 型的变量 strl 是否等于 str2, 若相等,则值为 true, 若不相等,则值为 false


String strl = "yes";


String str2 =  “no";


boolean bool = strl.equals(str2);


System.out.println(bool);


以上代码运行后将输出false。因此,"y" .equals(answer)用来判断变量answer的值是不是小写英文字母y。  !"y" .equals(answer)的含义:当answer的值不是y的时候,其值为true;answer的值是y的时候,其值为false。所以运行程序后输入y的时候,循环可以退出。程序运行结果如图5.6所示。


07e7a9af420c4891963907fa835160c7.png


图5.6示例5的运行结果


通过示例5可以得到使用while循环结构解决问题的步骤。


说明:使用while循环结构解决问题的步骤如下。


(1) 分析循环条件和循环操作。


(2) 套用while语法写出代码。


(3) 检查循环能否退出。


注意:使用while循环结构解决问题时,一定要注意检查循环能否退出,即避免出现“死循环”现象。检查下面的代码。


package cn.jbit.loops1;


public class ErrorDemo {


  public static void main(String[] args) {


     int i = 0;


     while(i < 4){


        System.out.println("循环一直运行,不会退出!");

//这里缺少什么?

     }

  }

}


分析代码,会发现在循环操作中一直没有改变i的值。i的值一直为0,即始终满足i<4的循环条件,因此循环会一直运行,不会退出。修改的方法是在输出语句之后增加语句:


i++ ;


永远不会退出的循环称为“死循环”。“死循环”是编程中应极力避免出现的情况,所以对于循环,编写完成后要仔细检查循环能否退出。


常见错误1


使用while循环结构解决问题时,经常会遇到下面的一些错误。


(1)没有为循环变量赋初值。


检查下面的代码。


package cn.jbit.loops1;


public class ErrorDemo {


  public static void main(String[] args) {


     int i;


     while(i < 4){


        System.out.println("循环");

        i++;


     }


  }


}

分析代码,会发现没有给循环变量i赋初值,程序编译将出现错误,并提示 “为变量i赋初值”。

(2)缺少{}。

运行下面的代码,将会出现什么结果?请动手尝试一下

package cn.jbit.loops1;


public class ErrorDemo {


  public static void main(String[] args) {


     int i = 0;


     while(i < 4){


        System.out.println("循环");

       i++;


}

}

}


目录
相关文章
|
7月前
|
Java
Java 循环结构
4月更文挑战第9天
|
7月前
|
Java
Java循环结构
Java循环结构
43 0
Java 循环结构 - for, while 及 do...while
Java 循环结构 - for, while 及 do...while
|
4月前
|
Java C语言
|
6月前
|
存储 Java 数据处理
Java中的循环结构语句详解与实战应用
Java中的循环结构语句详解与实战应用
71 2
|
7月前
|
Java
Java中的循环结构详解
Java中的循环结构详解
135 1
|
7月前
|
Java
Java中的判断和循环结构
Java中的判断和循环结构
53 1
|
7月前
|
Java
Java程序设计基础——循环结构
Java程序设计基础——循环结构
|
Java
Java的流程控制(选择结构语句 if ~ switch &循环结构语句dowhile ~ for)
程序执行的控制流程分为三种,也称为三种结构,分别是:顺序结构、和循环结构。 顺序结构指的是程序执行按照代码的编写顺序,依次从上往下开始执行,直到程序结束。程序的执行默认是顺序执行的
115 1
|
7月前
|
Java C语言
【Java开发指南 | 第十二篇】Java循环结构
【Java开发指南 | 第十二篇】Java循环结构
33 2