实验3.2 猜数字游戏
一、相关知识点
循环是控制结构语句中的最重要的语句之一,循环语句是根据条件反复执行同一代码块。循环语句有下列三种:
- while语句的一般格式:
while (表达式) {
若干语句
}
while语句的执行规则如下:
- 计算表达式的值,如果该值是true时,就进行(2),否则进行(3)。
- 执行循环体,再进行(1)。
- 结束while语句的执行。
2. for循环
for语句的一般格式:
for (表达式1; 表达式2; 表达式3) {
若干语句
}
for语句的执行规则如下:
- 计算“表达式1”的值,完成必要的初始化工作。
- 判断“表达式2”的值,若“表达式2”的值为true,则进行(3),否则进行(4)。
- 执行循环体,然后计算“表达式3”,以便改变循环条件,进行(2)。
- 结束for语句的执行。
3. 将字符串转化为数值
执行“int m = Integer.parseInt(“6789”);”可以将数字型字符串,如“6789”“123”转化为int型数据。
4. Scanner类创建一个对象
Scanner reader = new Scanner(System.in);
reader对象调用nextInt()方法读取用户输入的整数。
二、实验目的
本实验的目的是让学生使用if-else分支和while循环语句解决问题。
三、实验要求
编写一个简单的Java应用程序,实现下列功能:
程序随机分配给客户一个1-100之间的整数。
用户输入自己的猜测。
程序返回提示信息,提示信息分别是“猜大了”“猜小了”或“猜对了”。
用户可根据提示信息再次输入猜测,直到提示信息是“猜对了”。
四、程序效果示例
程序运行效果如图3.2所示。
图3.2 猜数字
五、程序模板
请按模板要求,将【代码】替换为Java程序代码。
【GuessNumber.java】
import java.util.Scanner;
import java.util.Random;
public class GuessNumber {
public static void main(String args[]) {
Scanner reader = new Scanner(System.in);
Random random = new Random();
System.out.println("给你一个1至100之间的整数,请猜测这个数");
int realNumber = random.nextInt(100) + 1; //random.nextInt(100)是[0,100)
//中的随机整数
int yourGuess = 0;
System.out.print("输入您的猜测:");
yourGuess = reader.nextInt();
while (yourGuess != realNumber) //循环条件
{
if (yourGuess > realNumber)
{
System.out.print("猜大了,再输入你的猜测:");
yourGuess = reader.nextInt();
}
else if (yourGuess < realNumber)
{
System.out.print("猜小了,再输入你的猜测:");
yourGuess = reader.nextInt();
}
}
System.out.println("猜对了");
}
}
结果:
六、实验后的练习
(1)用“yourGuess > realNumber”替换【代码1】可以码?
不可以,这样子会使得else if语句的内容失效。不符合实际逻辑
(2)语句“System.out.println("猜对了");”为何要放在while循环语句之后?放在while语句的循环体中合理吗?
放在外面,是因为while的循环条件是yourGuess != realNumber。如果要放在while循环里里面则要改变循环条件,同时要放进判断语句里面。