介绍
在本实验中,你将深入探索 Java 的控制流结构。这些是让你的程序能够做出决策和重复操作的重要工具。我们将涵盖以下三个主要概念:
- 用于决策的 If-else 语句
- 用于在已知次数内重复操作的 For 循环
- 用于在不确定重复次数时重复操作的 While 循环
如果这些术语听起来不熟悉,请不要担心——我们将详细解释每一个概念。通过本实验的学习,你将能够编写能够做出决策和重复操作的 Java 程序,为你的编程之旅开启全新的可能性!
在本实验中,你将深入探索 Java 的控制流结构。这些是让你的程序能够做出决策和重复操作的重要工具。我们将涵盖以下三个主要概念:
如果这些术语听起来不熟悉,请不要担心——我们将详细解释每一个概念。通过本实验的学习,你将能够编写能够做出决策和重复操作的 Java 程序,为你的编程之旅开启全新的可能性!
想象一下,你正在创建一个提供天气建议的程序。你希望它能根据温度给出不同的建议。这正是 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
:
public static void main(String[] args)
:
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
。保存文件。在大多数 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 循环非常有用——比如创建一个乘法表!
在 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
并打印结果。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 循环非常适合在你不知道需要重复执行某件事多少次的情况下使用。让我们用它来创建一个猜数字游戏!
在 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)
创建了一个无限循环。它会一直运行,直到我们告诉它停止。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++;
}
这段代码看起来复杂,但让我们分解一下:
Math.sqrt(number)
作为优化——我们只需要检查到该数字的平方根。isPrime
设置为 false 并跳出内部循环。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 编程中一些最重要的概念:
这些控制流结构是复杂程序的基石。通过它们,你可以创建能够做出决策、重复操作并解决复杂问题的程序。
记住,熟能生巧。尝试修改这些程序,或者使用这些概念创建新的程序。你能编写一个程序为每周的每一天提供不同的建议吗?或者打印出任意数字(最多到 100)的乘法表吗?可能性是无限的!
继续编码,继续学习,最重要的是,享受乐趣!你正在成为一名 Java 专家的路上稳步前进。