Java流程控制-循环结构:while与do-while语句及猜数字案例


这节课我们来学习新的控制结构——循环结构。那么我们已经学会使用顺序结构来让机器按部就班的解决问题;也学会了使用选择结构来让机器在特定条件下做某些事情。那么如果我们遇到了这样一个问题:
假设你需要打印一个字符串(例如:“Welcome to Java!”)100次。这就需要把下面的输出语句重复100遍,过程是相当繁琐:

System.out.println(“Welcome to Java!);

所以,该如何解决这个问题?
今天的循环结构就是帮我们解决一个重复问题。

while语句

我们先来学习循环结构中的while语句。

while语句的语法结构为:

while (布尔表达式)
{
	循环体
}

用流程图表示为:
在这里插入图片描述
语句含义:当布尔表达式为ture时,重复执行循环体

注意:

在循环控制中,不要使用浮点数来比较值是否相等。**因为浮点值是某些值的近似值,所以使用它们可能导致不精准的循环次数和不准确的结果。**考虑下面计算1+0.9+0.8+…+0.1的代码:

double item = 1;double sum = 0;
while(item !=0){//No guarantee item will be 0
	sum +=item;
	item -=0.1;
}
System.out.println(sum);

变量item从1开始,每次执行循环体就减少0.1。当item变为0时循环应该终止。但是,因为浮点运算结果是近似的,所以无法保item会变成真正的0。从表面上看,这个循环似乎没有问题,但它实际上是一个无限的死循环。

do…while语句

这是while循环,与其对应的有一个do…while循环。do…while语句和while语句非常的相似,do…while的语法结构为:

do {
	循环体
}while(布尔表达式);

它的流程图结构为:
在这里插入图片描述
语句含义:重复执行循环体,直到布尔表达式为false。

比较while与do-while语句

两种都是循环,不同的是,前者是先判断条件后执行,后者是先执行再判断条件。这就造成了while语句最少可以执行零次循环体,而do-while语句无论条件是否成立至少要执行一次循环体。

【示例:猜数字】

编写一个程序,随机产生一个0到100 之间且包含0和100的整数。程序提示用户连续输入数字,直到用户输入的数字和计算机随机产生的数字相匹配为止。对用户的每次输入的数字,程序都提示用户输入值偏大还是偏小,这样用户就可以明智的进行下一轮的猜测。

emmm…在家无聊运行这个程序玩玩还是蛮有意思的

运行代码:

import java.util.Scanner;

public class _3_9_CaiShuZi {

	public static void main(String[] args) {
		//1.随机产生一个0到100之间且包含0和100的整数。
		int key  = (int)(Math.random() * 101);
		
		//2.用户猜数字
		Scanner sc = new Scanner(System.in);
		int answer = -1;
		
		while(answer != key) {
			System.out.print("请输入一个0到100之间且包含0和100的整数:");
			answer = sc.nextInt();//用户输入猜测的数字
			
			if(answer == key) {//用户猜对了。输入数字和随机数相等
				System.out.println("恭喜你!随机数字就是"+key);
			}else if (answer > key) {
				System.out.print("输入值偏大!");
			}else {
				System.out.print("输入值偏小!");
			}
		}
		
		sc.close();//关闭12行的输入流,养成好习惯。
	}
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

汝嫣兮

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值