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行的输入流,养成好习惯。
	}

猜你喜欢

转载自blog.csdn.net/m0_46700215/article/details/105777911