第4章java循环语句-副本剖析

上传人:今*** 文档编号:108371115 上传时间:2019-10-23 格式:PPT 页数:82 大小:2.26MB
返回 下载 相关 举报
第4章java循环语句-副本剖析_第1页
第1页 / 共82页
第4章java循环语句-副本剖析_第2页
第2页 / 共82页
第4章java循环语句-副本剖析_第3页
第3页 / 共82页
第4章java循环语句-副本剖析_第4页
第4页 / 共82页
第4章java循环语句-副本剖析_第5页
第5页 / 共82页
点击查看更多>>
资源描述

《第4章java循环语句-副本剖析》由会员分享,可在线阅读,更多相关《第4章java循环语句-副本剖析(82页珍藏版)》请在金锄头文库上搜索。

1、1,第四章 Java循环语句,学习目标 使用while循环编写“重复执行某些语句”的程序 实训一:编写程序GuessNumber 遵循循环设计策略来开发循环 实训二:编写程序SubstractionQuizLoop 使用标志值控制循环 使用输入重定向以获取大量输入数据 使用do-while语句编写循环 使用使用for语句编写循环 了解三种类型循环语句的相似处和不同点 编写嵌套循环 从多种例子中学习循环 使用break和continue来实现程序的控制 使用确定对话框 控制循环,2,4.1 引言 如果你想打印一个字符串 “Welcome to Java!” 100次,就 需要把下面的语句重复写上

2、100遍! System.out.println(“Welcome to Java!“); System.out.println(“Welcome to Java!“); System.out.println(“Welcome to Java!“); Java提供了一种称为循环 的结构, 用来控制一个语句块重复 执行的次数。下面的代码就是使用循环语句 来告诉计算机打印上面 这个字符串100次: int count = 0; while( count 100 ) System.out.println(“Welcome to Java!“); count+; ,其中的语句 将被重复执 行100遍

3、!,3,4.2 while循环 while语句的语法格式是: while ( 布尔表达式 ) 语句块 /“循环体” while语句的执行流程如图4-1所示。 循环结构中包含的语句块称为 循环体(即需要重复执行的操作序列); 循环体的每一次执行称为一次循环迭代; 每个循环结构都需要一个循环的继续条件, 它是一个布尔表达式; 每次循环迭代前,总是先计算这个 循环继续条件以决定是否执行循环体。 若为true,则执行循环体;否则,终止整个循环并将程序的控制 转移到while语句之后的下一条语句。,4,提示 当事先确切知 道循环次数时,可 以使用一个变量( 例如,count)来 对执行次数进行计 数。这

4、种类型的循 环称为“计数器控 制的循环”。,5,下面是另外一个例子,有助于理解循环是如何工作的: int sum = 0 , i = 1; while ( i 100 ) sum = sum + i; i+; System.out.println( “sum = “ + sum );,如果循环被错误的写成如下所示,那会出现什么情况? int sum = 0 , i = 1; while ( i 100 ) sum = sum + i; System.out.println( “sum = “ + sum );,警告 必须确保循环条件最终可以变为false,以便循环能够结束。一个常见的循环设计错

5、误是无限循环(也叫做“死循环”)。也就是说,由于循环条件的不当而使循环永远不可能结束。,其中变量sum 被称为“累加器”,每次的重复都是从旧值的基础上“迭代”出新值,并由新值替代旧值。,6,另外,程序员经常会犯的错误,就是使循环多迭代一次或 少迭代一次,这种情况称为“出一错误 ”(off-by one error)。 例如,下面的循环会将字符串 “Welcome to Java!” 打印101次: int count = 0; while ( count = 100 ) System.out.println( “Welcome to Java!“ ); count+; 这个错误出在什么地方呢?

6、,7,注意 1)只有当循环体内只包含一条语句或不包含语句时,循环体的花括号 才可以省略; 2)当循环体不包含语句时,必须留一个分号“ ;”,以表示“空操作”或叫做“空语句”。,System.out.print( “开始计时 “ ); final int GAP = 10; long startTime = System.currentTimeMillis()/1000; while( (System.currentTimeMillis()/1000-startTime) GAP ) ; System.out.println( GAP + “秒钟时间到!“ );,int i = 0; while

7、( i 100 ) System.out.println( +i );,8,4.2.1 实例:猜数字 下面是该程序要求的一次运行示例:,请你猜一个 0 100 的魔数 请输入你的猜测:50 你的猜测大了! 请输入你的猜测:25 你的猜测大了! 请输入你的猜测:12 你的猜测大了! 请输入你的猜测:6 你的猜测小了! 请输入你的猜测:9 恭喜你猜对了!这个数是 9.,根据我们已有的经验,该 程序首先需要产生一个0100 的随机数(魔数),然后提示 用户输入一个猜测数,接着便 可以将这个猜测数与随机数进 行比较了。,不要急于编程! 编码前的思考是非常重要的! 尤其是涉及循环的程序设计。 切记: 一

8、次增加一个步骤地 “逐步编码”是一个很好的习惯.,9,提示 如果不知道如何立即编写循环,可以编写循环只执行一次的代码,然后规划如何在循环中重复执行这些代码这是一种很好的办法。,10,下面我们先为该程序打一个初稿循环只执行一次的代码:,/源程序清单 4-1(初稿) GuessNumber.java import java.util.Scanner; public class GuessNumber public static void main(String args) /产生一个魔数(随机数) int number = (int)( Math.random() * 101 ); Scanner

9、 input = new Scanner (System.in); System.out.println( “请你猜一个 0 100 的魔数“ ); System.out.print( “请你输入一个猜测数:“ ); int guess = input.nextInt(); /读入用户输入的猜测数 if ( guess = number ) System.out.println(“恭喜你猜对了!这个数是“ + number ); else if ( guess number ) System.out.println(“你的猜测大了!“ ); else System.out.println(“你

10、的猜测小了!“ ); ,虽然这个循环可以重复提示用户输入猜测数并进行比较,但是它永远都不会结束!正确的做法应该是当guess与number匹配时,该循环就应该结束。所以应该改写循环继续条件.,11,下面给出该程序的完整代码:,/源程序清单4-1 GuessNumber.java import java.util.Scanner; public class GuessNumber public static void main(String args) int number = (int)( Math.random() * 101 ); Scanner input = new Scanner (

11、System.in); System.out.println( “请你猜一个 0 100 的魔数“ ); int guess = -1; / 初始化 guess while ( guess != number ) System.out.print( “请你输入一个猜测数:“ ); guess = input.nextInt(); if ( guess = number ) System.out.println( “恭喜你猜对了!这个数是“ + number ); else if ( guess number ) System.out.println(“你的猜测大了!“ ); else Syst

12、em.out.println(“你的猜测小了!“ ); / 循环结束 ,注意 这里的guess必须进行初始化,否则会出现编译错误。这里将它初始化为-1。将它初始化为0100之间的数,就会影响程序的正确性。因为,它很可能就是要猜测的数。,12,4.2.2 循环设计策略 编写循环时,应该考虑如下四个步骤: i) 确定需要重复执行的语句; ii) 将这些语句放在一个循环中。 iii)编写循环条件,并为控制循环添加适当的语句。,int count = 0; while ( ) System.out.println( “Welcome to Java!“ ); count+; ,iv)为循环变量(如,c

13、ount)选择适当的初始值。以免“出一错误”。,count 100,int sum = 0 , i = 1; while( ) sum = sum + i; i+; / sum=1+2+.+99,累加器变量 sum初始化,i 100,循环控制 变量i初始化,13,4.2.3 实例:高级数学学习工具 程序清单3-4中的数学减法学习工具只能产生一道题目。 现在我们使用循环来重复产生题目。如何编写能产生5道题目 的代码呢? 遵循循环设计策略: i) 确定需要重复的语句: 获取两个随机数,提示用户对两数做减法,然后打分; ii) 将这些语句放入一个循环里。 iii)增加一个循环变量和循环条件,并为控制

14、循环添加适当的语句。,下面的程序清单4-2 给出的程序可以产生5道题目,在学生 回答完所有5道题目后,报告回答正确的题数。这个程序最后还 显示该测试所花的时间,并列出所有题目的回答情况。,14,/源程序清单4-2 SubstractionQuizLoop.java import java.util.Scanner; public class SubstractionQuizLoop public static void main(String args) final int NUMBER_OF_QUESTIONS = 5; /声明问题数量 int correctCount =0; /“回答正确

15、”计数器初始化 int count =0; /“问题数量”计数器初始化 long startTime = System.currentTimeMillis(); /开始时间 String output = “; / “回答问题的情况汇总”字符串初始化 Scanner input = new Scanner (System.in); while ( count NUMBER_OF_QUESTIONS ) int number1 = (int)(Math.random()*10); int number2 = (int)(Math.random()*10); /确保number1不小于number

16、2 if ( number1 number2 ) int temp = number1; number1 = number2; number2 = temp; ,15,/出题 System.out.print(number1 + “-“ + number2 + “= ?“); int answer = input.nextInt(); /读入键盘输入的答案 if ( number1 - number2 = answer ) /显示评语 System.out.println( “正确“ ); correctCount +; else System.out.println( “你的回答是错误的。n“ + number1 + “-“ + nu

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 高等教育 > 大学课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号