Java 控制流:条件语句与循环

JavaJavaBeginner
立即练习

💡 本教程由 AI 辅助翻译自英文原版。如需查看原文,您可以 切换至英文原版

介绍

在本实验中,你将深入探索 Java 的控制流结构。这些是让你的程序能够做出决策和重复操作的重要工具。我们将涵盖以下三个主要概念:

  1. 用于决策的 If-else 语句
  2. 用于在已知次数内重复操作的 For 循环
  3. 用于在不确定重复次数时重复操作的 While 循环

如果这些术语听起来不熟悉,请不要担心——我们将详细解释每一个概念。通过本实验的学习,你将能够编写能够做出决策和重复操作的 Java 程序,为你的编程之旅开启全新的可能性!


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL java(("`Java`")) -.-> java/BasicSyntaxGroup(["`Basic Syntax`"]) java(("`Java`")) -.-> java/ObjectOrientedandAdvancedConceptsGroup(["`Object-Oriented and Advanced Concepts`"]) java/BasicSyntaxGroup -.-> java/variables("`Variables`") java/BasicSyntaxGroup -.-> java/if_else("`If...Else`") java/BasicSyntaxGroup -.-> java/for_loop("`For Loop`") java/BasicSyntaxGroup -.-> java/while_loop("`While Loop`") java/BasicSyntaxGroup -.-> java/output("`Output`") java/ObjectOrientedandAdvancedConceptsGroup -.-> java/user_input("`User Input`") subgraph Lab Skills java/variables -.-> lab-413751{{"`Java 控制流:条件语句与循环`"}} java/if_else -.-> lab-413751{{"`Java 控制流:条件语句与循环`"}} java/for_loop -.-> lab-413751{{"`Java 控制流:条件语句与循环`"}} java/while_loop -.-> lab-413751{{"`Java 控制流:条件语句与循环`"}} java/output -.-> lab-413751{{"`Java 控制流:条件语句与循环`"}} java/user_input -.-> lab-413751{{"`Java 控制流:条件语句与循环`"}} end

理解 If-Else 语句

想象一下,你正在创建一个提供天气建议的程序。你希望它能根据温度给出不同的建议。这正是 if-else 语句派上用场的地方!

  1. 在 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 语句以提供天气建议
        }
    }

    以下是代码的解析:

    1. public class WeatherAdvisor:

      • 这行代码声明了一个名为 WeatherAdvisor 的公共类。
      • 在 Java 中,每个程序必须至少有一个类,且类名应与文件名匹配(在本例中为 WeatherAdvisor.java)。
    2. public static void main(String[] args):

      • 这是 main 方法,是任何 Java 程序的入口点。
      • public: 该方法可以从类外部访问。
      • static: 该方法属于类本身,而不是类的任何特定实例。
      • void: 该方法不返回任何值。
      • main: 这是方法的名称。Java 会寻找名为 "main" 的方法来开始执行程序。
      • (String[] args): 这允许方法接受命令行参数(尽管在本例中我们没有使用它们)。
    3. int temperature = 28;:

      • 这行代码声明了一个名为 temperature 的整数变量,并将其初始化为 28。
      • int 是 Java 中表示整数的数据类型。
      • 注释 // 温度,单位为摄氏度 解释了该值的含义。
    4. System.out.println("The temperature is " + temperature + "°C.");:

      • 这行代码向控制台打印一条消息。
      • System.out.println() 是一个输出文本并换行的方法。
      • 这里的 + 运算符用于字符串连接,将文本与 temperature 变量的值结合起来。
      • 末尾的 °C 为输出添加了摄氏度符号。

    这个基本结构设置了一个定义温度并打印出来的程序。它为添加更复杂的逻辑奠定了基础,例如我们稍后添加的 if-else 语句,以根据温度值提供天气建议。

  2. 将 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 else 代码示例

    让我们分解一下:

    • if 语句检查温度是否高于 30°C。
    • 如果不是,它会移动到第一个 else if,检查温度是否高于 20°C。
    • 这个过程会一直持续,直到找到一个为真的条件,或者到达最后的 else
    • 只有一个代码块会运行——一旦某个条件为真,Java 会跳过其余部分。
  3. 保存文件。在大多数 IDE(包括 WebIDE)中,你可以通过按 Ctrl+S(或 Mac 上的 Cmd+S)来保存。

  4. 现在让我们编译程序。在 WebIDE 底部的终端中,输入:

    javac ~/project/WeatherAdvisor.java

    这个命令告诉 Java 编译你的代码。如果你没有看到任何输出,那是好事!这意味着没有错误。

  5. 要运行程序,输入:

    java -cp ~/project WeatherAdvisor

    -cp ~/project 部分告诉 Java 在哪里找到你编译的代码。

  6. 你应该会看到以下输出:

    The temperature is 28°C.
    天气温暖宜人,好好享受吧!

    这与我们的代码匹配,因为 28°C 高于 20°C 但不超过 30°C。

  7. 让我们来实验一下!将代码中的 temperature 值改为 35,然后保存、编译并再次运行。你应该会看到:

    The temperature is 35°C.
    天气炎热,记得多喝水!
  8. 尝试将温度改为 15 和 5,每次编译并运行。观察输出如何变化!

恭喜!你刚刚编写了一个能够做出决策的程序。这是编程中的一个基本概念,你会经常用到它。

使用 For 循环

现在,让我们来学习 for 循环。当你想要重复执行某件事特定次数时,for 循环非常有用——比如创建一个乘法表!

  1. 在 WebIDE 中打开 MultiplicationTable.java 文件。你会看到以下代码:

    public class MultiplicationTable {
        public static void main(String[] args) {
            int number = 5;
            System.out.println("Multiplication table for " + number + ":");
    
            // TODO: 在此处添加 for 循环以打印乘法表
        }
    }
  2. 将 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。
  3. 保存文件。

  4. 编译程序:

    javac ~/project/MultiplicationTable.java
  5. 运行程序:

    java -cp ~/project MultiplicationTable
  6. 你应该会看到 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 循环在起作用!

  7. 让我们来实验一下!将 number 变量改为 7,然后保存、编译并再次运行。你应该会看到 7 的乘法表。

  8. 想了解更多吗?尝试将 for 循环中的 i <= 10 改为 i <= 15。这将使乘法表扩展到 15 而不是 10。

当你确切知道需要重复执行某件事的次数时,for 循环非常有用。在你的编程之旅中,你会经常用到它们!

探索 While 循环

While 循环非常适合在你不知道需要重复执行某件事多少次的情况下使用。让我们用它来创建一个猜数字游戏!

  1. 在 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 读取玩家的输入。

  2. 将 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 退出循环。
  3. 保存文件。

  4. 编译程序:

    javac ~/project/GuessTheNumber.java
  5. 运行程序:

    java -cp ~/project GuessTheNumber
    GuessTheNumber 程序输出
  6. 现在开始玩游戏!继续输入数字,直到你猜中为止。程序会告诉你猜测是太高还是太低。

这个 while 循环会一直运行,直到猜中正确的数字。我们不知道需要多少次尝试,这就是为什么 while 循环在这里非常合适。

结合控制结构

在我们的最终挑战中,我们将结合 if-else 语句、for 循环和 while 循环来创建一个质数查找器!

  1. 在 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();
        }
    }
  2. 将 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,以便移动到下一个数字。
  3. 保存文件。

  4. 编译程序:

    javac ~/project/PrimeNumberFinder.java
  5. 运行程序:

    java -cp ~/project PrimeNumberFinder
  6. 当提示时,输入一个数字(例如 10)以查找相应数量的质数。你应该会看到类似以下的输出:

    你想查找多少个质数? 10
    前 10 个质数:
    2 3 5 7 11 13 17 19 23 29

这个程序展示了当你结合不同的控制结构时,Java 有多么强大。你现在能够创建可以做出决策、重复操作并解决复杂问题的程序了!

总结

干得漂亮!在本实验中,你已经掌握了 Java 编程中一些最重要的概念:

  1. If-else 语句:你在天气建议程序中用它来做出决策。
  2. For 循环:你用它创建了一个乘法表,重复执行特定次数的操作。
  3. While 循环:你在猜数字游戏中用它重复执行操作,直到满足条件。
  4. 结合控制结构:你将所有内容结合起来,创建了一个质数查找器。

这些控制流结构是复杂程序的基石。通过它们,你可以创建能够做出决策、重复操作并解决复杂问题的程序。

记住,熟能生巧。尝试修改这些程序,或者使用这些概念创建新的程序。你能编写一个程序为每周的每一天提供不同的建议吗?或者打印出任意数字(最多到 100)的乘法表吗?可能性是无限的!

继续编码,继续学习,最重要的是,享受乐趣!你正在成为一名 Java 专家的路上稳步前进。

您可能感兴趣的其他 Java 教程