介绍
在本实验中,你将深入探索 Java 的控制流结构。这些是让你的程序能够做出决策和重复操作的重要工具。我们将涵盖以下三个主要概念:
- 用于决策的 If-else 语句
- 用于在已知次数内重复操作的 For 循环
- 用于在不确定重复次数时重复操作的 While 循环
如果这些术语听起来不熟悉,请不要担心——我们将详细解释每一个概念。通过本实验的学习,你将能够编写能够做出决策和重复操作的 Java 程序,为你的编程之旅开启全新的可能性!
理解 If-Else 语句
想象一下,你正在创建一个提供天气建议的程序。你希望它能根据温度给出不同的建议。这正是 if-else 语句派上用场的地方!
在 WebIDE 中打开
WeatherAdvisor.java文件。你会看到以下代码:public class WeatherAdvisor { public static void main(String[] args) { int temperature = 28; // 温度,单位为摄氏度 System.out.println("The temperature is " + temperature + "°C."); // TODO: 在此处添加 if-else 语句以提供天气建议 } }以下是代码的解析:
public class WeatherAdvisor:- 这行代码声明了一个名为 WeatherAdvisor 的公共类。
- 在 Java 中,每个程序必须至少有一个类,且类名应与文件名匹配(在本例中为 WeatherAdvisor.java)。
public static void main(String[] args):- 这是 main 方法,是任何 Java 程序的入口点。
public: 该方法可以从类外部访问。static: 该方法属于类本身,而不是类的任何特定实例。void: 该方法不返回任何值。main: 这是方法的名称。Java 会寻找名为 "main" 的方法来开始执行程序。(String[] args): 这允许方法接受命令行参数(尽管在本例中我们没有使用它们)。
int temperature = 28;:- 这行代码声明了一个名为
temperature的整数变量,并将其初始化为 28。 int是 Java 中表示整数的数据类型。- 注释
// 温度,单位为摄氏度解释了该值的含义。
- 这行代码声明了一个名为
System.out.println("The temperature is " + temperature + "°C.");:- 这行代码向控制台打印一条消息。
System.out.println()是一个输出文本并换行的方法。- 这里的
+运算符用于字符串连接,将文本与temperature变量的值结合起来。 - 末尾的
°C为输出添加了摄氏度符号。
这个基本结构设置了一个定义温度并打印出来的程序。它为添加更复杂的逻辑奠定了基础,例如我们稍后添加的 if-else 语句,以根据温度值提供天气建议。
将 TODO 注释替换为以下代码:
if (temperature > 30) { System.out.println("天气炎热,记得多喝水!"); } else if (temperature > 20) { System.out.println("天气温暖宜人,好好享受吧!"); } else if (temperature > 10) { System.out.println("天气有点凉,你可能需要一件薄外套。"); } else { System.out.println("天气寒冷,穿上保暖的衣服吧!"); }
让我们分解一下:
if语句检查温度是否高于 30°C。- 如果不是,它会移动到第一个
else if,检查温度是否高于 20°C。 - 这个过程会一直持续,直到找到一个为真的条件,或者到达最后的
else。 - 只有一个代码块会运行——一旦某个条件为真,Java 会跳过其余部分。
保存文件。在大多数 IDE(包括 WebIDE)中,你可以通过按 Ctrl+S(或 Mac 上的 Cmd+S)来保存。
现在让我们编译程序。在 WebIDE 底部的终端中,输入:
javac ~/project/WeatherAdvisor.java这个命令告诉 Java 编译你的代码。如果你没有看到任何输出,那是好事!这意味着没有错误。
要运行程序,输入:
java -cp ~/project WeatherAdvisor-cp ~/project部分告诉 Java 在哪里找到你编译的代码。你应该会看到以下输出:
The temperature is 28°C. 天气温暖宜人,好好享受吧!这与我们的代码匹配,因为 28°C 高于 20°C 但不超过 30°C。
让我们来实验一下!将代码中的
temperature值改为 35,然后保存、编译并再次运行。你应该会看到:The temperature is 35°C. 天气炎热,记得多喝水!尝试将温度改为 15 和 5,每次编译并运行。观察输出如何变化!
恭喜!你刚刚编写了一个能够做出决策的程序。这是编程中的一个基本概念,你会经常用到它。
使用 For 循环
现在,让我们来学习 for 循环。当你想要重复执行某件事特定次数时,for 循环非常有用——比如创建一个乘法表!
在 WebIDE 中打开
MultiplicationTable.java文件。你会看到以下代码:public class MultiplicationTable { public static void main(String[] args) { int number = 5; System.out.println("Multiplication table for " + number + ":"); // TODO: 在此处添加 for 循环以打印乘法表 } }将 TODO 注释替换为以下 for 循环:
for (int i = 1; i <= 10; i++) { int result = number * i; System.out.println(number + " x " + i + " = " + result); }让我们分解一下:
for (int i = 1; i <= 10; i++)是 for 循环语句:int i = 1创建了一个变量i并将其设置为 1。这仅在循环开始时执行一次。i <= 10是条件。只要这个条件为真,循环就会继续。i++每次循环结束后将i增加 1。
- 在循环内部,我们将
number乘以i并打印结果。 - 这将重复 10 次,
i从 1 递增到 10。
保存文件。
编译程序:
javac ~/project/MultiplicationTable.java运行程序:
java -cp ~/project MultiplicationTable你应该会看到 5 的乘法表:
Multiplication table for 5: 5 x 1 = 5 5 x 2 = 10 5 x 3 = 15 5 x 4 = 20 5 x 5 = 25 5 x 6 = 30 5 x 7 = 35 5 x 8 = 40 5 x 9 = 45 5 x 10 = 50看到它是如何打印从 1 到 10 的乘法表了吗?这就是我们的 for 循环在起作用!
让我们来实验一下!将
number变量改为 7,然后保存、编译并再次运行。你应该会看到 7 的乘法表。想了解更多吗?尝试将 for 循环中的
i <= 10改为i <= 15。这将使乘法表扩展到 15 而不是 10。
当你确切知道需要重复执行某件事的次数时,for 循环非常有用。在你的编程之旅中,你会经常用到它们!
探索 While 循环
While 循环非常适合在你不知道需要重复执行某件事多少次的情况下使用。让我们用它来创建一个猜数字游戏!
在 WebIDE 中打开
GuessTheNumber.java文件。你会看到以下代码:import java.util.Random; import java.util.Scanner; public class GuessTheNumber { public static void main(String[] args) { Random random = new Random(); int numberToGuess = random.nextInt(100) + 1; // 生成 1 到 100 之间的随机数 Scanner scanner = new Scanner(System.in); int guess; int attempts = 0; System.out.println("我在想一个 1 到 100 之间的数字。你能猜出来吗?"); // TODO: 在此处添加 while 循环以实现猜数字游戏 scanner.close(); } }这段代码设置了一个随机数供玩家猜测,并使用 Scanner 读取玩家的输入。
将 TODO 注释替换为以下 while 循环:
while (true) { System.out.print("输入你的猜测:"); guess = scanner.nextInt(); attempts++; if (guess < numberToGuess) { System.out.println("太低了!再试一次。"); } else if (guess > numberToGuess) { System.out.println("太高了!再试一次。"); } else { System.out.println("恭喜!你在 " + attempts + " 次尝试中猜中了数字。"); break; } }让我们分解一下:
while (true)创建了一个无限循环。它会一直运行,直到我们告诉它停止。- 在循环内部,我们要求输入猜测并增加尝试计数器。
- 我们使用 if-else 语句来检查猜测是太低、太高还是正确。
- 如果猜测正确,我们会打印一条祝贺消息,并使用
break退出循环。
保存文件。
编译程序:
javac ~/project/GuessTheNumber.java运行程序:
java -cp ~/project GuessTheNumber
现在开始玩游戏!继续输入数字,直到你猜中为止。程序会告诉你猜测是太高还是太低。
这个 while 循环会一直运行,直到猜中正确的数字。我们不知道需要多少次尝试,这就是为什么 while 循环在这里非常合适。
结合控制结构
在我们的最终挑战中,我们将结合 if-else 语句、for 循环和 while 循环来创建一个质数查找器!
在 WebIDE 中打开
PrimeNumberFinder.java文件。你会看到以下代码:import java.util.Scanner; public class PrimeNumberFinder { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); int count = 0; int number = 2; System.out.print("你想查找多少个质数? "); int maxPrimes = scanner.nextInt(); System.out.println("前 " + maxPrimes + " 个质数:"); // TODO: 在此处实现质数查找逻辑 scanner.close(); } }将 TODO 注释替换为以下代码:
while (count < maxPrimes) { boolean isPrime = true; for (int i = 2; i <= Math.sqrt(number); i++) { if (number % i == 0) { isPrime = false; break; } } if (isPrime) { System.out.print(number + " "); count++; } number++; }这段代码看起来复杂,但让我们分解一下:
- 我们使用 while 循环来持续查找质数,直到找到所需的数量。
- 对于每个数字,我们使用 for 循环来检查它是否是质数。
- 我们使用
Math.sqrt(number)作为优化——我们只需要检查到该数字的平方根。 - 如果我们找到一个除数,我们就知道这个数字不是质数,因此将
isPrime设置为 false 并跳出内部循环。 - 如果 for 循环结束后
isPrime仍然为 true,我们打印该数字并增加计数器。 - 我们总是在最后增加
number,以便移动到下一个数字。
保存文件。
编译程序:
javac ~/project/PrimeNumberFinder.java运行程序:
java -cp ~/project PrimeNumberFinder当提示时,输入一个数字(例如 10)以查找相应数量的质数。你应该会看到类似以下的输出:
你想查找多少个质数?10 前 10 个质数: 2 3 5 7 11 13 17 19 23 29
这个程序展示了当你结合不同的控制结构时,Java 有多么强大。你现在能够创建可以做出决策、重复操作并解决复杂问题的程序了!
总结
干得漂亮!在本实验中,你已经掌握了 Java 编程中一些最重要的概念:
- If-else 语句:你在天气建议程序中用它来做出决策。
- For 循环:你用它创建了一个乘法表,重复执行特定次数的操作。
- While 循环:你在猜数字游戏中用它重复执行操作,直到满足条件。
- 结合控制结构:你将所有内容结合起来,创建了一个质数查找器。
这些控制流结构是复杂程序的基石。通过它们,你可以创建能够做出决策、重复操作并解决复杂问题的程序。
记住,熟能生巧。尝试修改这些程序,或者使用这些概念创建新的程序。你能编写一个程序为每周的每一天提供不同的建议吗?或者打印出任意数字(最多到 100)的乘法表吗?可能性是无限的!
继续编码,继续学习,最重要的是,享受乐趣!你正在成为一名 Java 专家的路上稳步前进。



