-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathGreetingProgram.java
More file actions
87 lines (75 loc) · 5.27 KB
/
Copy pathGreetingProgram.java
File metadata and controls
87 lines (75 loc) · 5.27 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
import java.util.Scanner; // 这行代码是告诉电脑,我们要使用一个叫做 Scanner 的工具。
// 这个工具可以用来读取你在键盘上输入的东西。
import java.util.Random;
public class GreetingProgram { // 这行代码是给我们的程序起个名字,就叫 GreetingProgram。
// 所有的代码都要写在它后面的大括号 {} 里面。
public static void main(String[] args) { // 这是程序的起点。电脑会从这里开始运行你的代码。
// 它后面的大括号 {} 里面就是程序要执行的步骤。
// 创建一个扫描器,用于读取用户的输入
Scanner scanner = new Scanner(System.in); // 这行代码是在创建一个 Scanner 工具,
// 并把它命名为 scanner。
Random random = new Random();// 这行代码是在创建一个 random 工具,
// 并把它命名为 random。
System.out.println("你好!你的名字是什么?"); // 这行代码是让程序在屏幕上显示出这句话。
// 读取用户输入的名字,并存储在名为 'name' 的变量里
String name = scanner.nextLine(); // 这行代码是让程序等待你输入。
// 当你输入名字并按回车后,它会把你的名字
// 存储在一个叫做 name 的“盒子”里。
// 打印出打招呼的话
System.out.println("很高兴认识你," + name + "我们来玩猜数字游戏吧!"); // 这行代码会把“很高兴认识你,”
// 和你的名字(存在 name 盒子里)
// 连接起来,然后显示在屏幕上。
System.out.println("请输入yes或no进行游戏");
// 读取用户输入的一整行文字,并存入名为 userResponse 的字符串变量
String userResponse = scanner.nextLine();
// 这是一个外层循环,控制整个游戏的进行。只要用户输入 "yes" (不区分大小写),循环就会继续
// .equalsIgnoreCase("yes") 方法会忽略大小写,例如 "YES", "yes", "Yes" 都会被识别
while (userResponse.equalsIgnoreCase("yes")) {
// 每次新游戏开始,都创建一个新的随机数生成器
// 生成一个 1 到 100 之间的随机整数
// random.nextInt(100) 会生成 0 到 99 之间的随机数
// + 1 之后,范围就变成了 1 到 100
int secretNumber = random.nextInt(100) + 1;
// 存储用户猜测的数字
int guessedNumber;
// 这是一个布尔(boolean)类型的变量,它只能存 true(真)或 false(假)
// 我们用它来标记游戏是否已经猜对。游戏开始时,设置为 false(还没有猜对)
boolean hasGuessedCorrectly = false;
System.out.println("欢迎来到猜数字游戏!");
System.out.println("我已经想好了一个 1 到 100 之间的整数。");
// 这是一个内层循环。只要 hasGuessedCorrectly 变量是 false,就会一直重复
// `!` 符号在 Java 中表示“非”,所以 `!hasGuessedCorrectly` 意味着“当 hasGuessedCorrectly 不是 true 时”
while (!hasGuessedCorrectly) {
System.out.println("请猜一个数字:");
// 读取用户输入的下一个整数。如果用户输入的是文字,程序会出错
guessedNumber = scanner.nextInt();
// 这是一个条件判断语句(if-else if-else)
// 程序会根据用户的猜测和秘密数字的关系,来给出不同的提示
if (guessedNumber < secretNumber) {
// 如果猜测的数字小于秘密数字
System.out.println("太小了!");
} else if (guessedNumber > secretNumber) {
// 如果猜测的数字大于秘密数字
System.out.println("太大了!");
} else {
// 如果以上两种情况都不满足,说明猜对了
System.out.println("恭喜你!你猜对了!");
// 猜对后,将 hasGuessedCorrectly 设置为 true,这样内层循环就会结束
hasGuessedCorrectly = true;
// 这是一个非常重要的步骤!
// 因为 nextInt() 方法只读取数字,不会读取用户输入后的回车符,所以回车符还留在输入缓冲区里
// 我们用 nextLine() 来清除它,避免影响下一次读取用户的文字输入(yes/no)
scanner.nextLine();
System.out.println("你还想再玩一次吗?请输入yes或no:");
// 读取用户在游戏结束后输入的文字,决定是否继续外层循环
userResponse = scanner.nextLine();
}
}
System.out.println("好的,再见!");
// 游戏结束后,关闭 Scanner,释放系统资源。这是一个好的编程习惯
scanner.close();
// 关闭扫描器
// 这行代码是告诉程序,我们用完了 scanner 工具,可以关闭它了。
}
}
}