「Java流程控制」顺序结构

162 阅读7分钟

三种基本程序结构

Java程序,以及大多数编程语言,都基于以下三种基本控制结构构建:

1.顺序结构(Sequence Structure)

顺序结构是指程序按照代码的先后顺序依次执行,是编程语言中最基本的程序结构。具有以下特点:

  • 代码从上到下逐行执行
  • 每条语句执行一次
  • 没有分支或循环

2.选择结构(Selection Structure)

选择结构是根据条件判断决定执行哪些代码块,也称为分支结构。主要形式包括:

  • if语句
  • if-else语句
  • if-else if-else语句
  • switch语句

3.循环结构(Loop Structure)

循环结构指的是在满足条件的情况下重复执行某段代码。主要形式包括:

  • for 循环
  • while 循环
  • do-while 循环
  • 增强 for 循环(for-each)

实际编程中,这三种基本结构经常嵌套使用。任何复杂的编程问题都可以使用三种基本结构的组合来解决。三种基本结构是结构化编程的基础。

顺序结构概述

顺序结构是Java中最基本的程序结构,也是最简单的流程控制方式。在顺序结构中,程序按照代码书写的顺序依次执行,没有分支、循环或跳转。它是所有程序的基础,任何复杂的程序逻辑都可以看作是由多个顺序结构组合而成的。

顺序结构简单直接,易于理解和实现。适合处理不需要复杂逻辑判断或循环的简单任务。使用于初始化变量、执行简单的计算、输出信息等情况。几乎所有程序都包含顺序结构,尤其是那些不需要复杂逻辑判断或循环处理的简单任务。

案例解析

案例:简单的加法计算器
public class SimpleCalculator {
    public static void main(String[] args) {
        int a = 5;
        int b = 3;
        int sum = a + b; // 顺序执行加法运算
        System.out.println("两数之和为: " + sum); // 顺序输出结果
    }
}

运行结果
两数之和为: 8
代码解析

  • Java源文件保存为“SimpleCalculator.java”。
  • 在程序中定义了两个整数变量ab,然后计算它们的和并存储在变量sum中,最后打印出结果。
案例:简单的加法计算器(带用户输入)
import java.util.Scanner;

public class SimpleCalculatorWithInput {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        
        System.out.print("请输入第一个整数: ");
        int a = scanner.nextInt(); // 顺序读取用户输入
        
        System.out.print("请输入第二个整数: ");
        int b = scanner.nextInt(); // 顺序读取用户输入
        
        int sum = a + b; // 顺序执行加法运算
        System.out.println("两数之和为: " + sum); // 顺序输出结果
        
        scanner.close(); // 关闭Scanner对象
    }
}

运行结果
请输入第一个整数: 12
请输入第二个整数: 20
两数之和为: 32
代码解析

  • Java源文件保存为“SimpleCalculatorWithInput.java”。
  • 使用Scanner类获取用户输入的两个整数。
  • 程序按照顺序读取用户输入的整数,后执行加法运算,再输出结果,最后关闭Scanner对象。
案例:个人信息输出
public class PersonalInfo {
    public static void main(String[] args) {
        String name = "张三";
        int age = 25;
        String occupation = "软件工程师";
        System.out.println("姓名: " + name); // 顺序输出姓名
        System.out.println("年龄: " + age);   // 顺序输出年龄
        System.out.println("职业: " + occupation); // 顺序输出职业
    }
}

运行结果
姓名: 张三
年龄: 25
职业: 软件工程师
代码解析

  • Java源文件保存为“PersonalInfo.java”。
  • 在程序定义了三个变量分别用来存储姓名、年龄和职业信息,然后依次输出这些信息。
案例:个人信息输出(带格式化)
public class PersonalInfoFormatted {
    public static void main(String[] args) {
        String name = "张三";
        int age = 25;
        String occupation = "软件工程师";
        String city = "上海";
        
        // 使用System.out.printf进行格式化输出
        System.out.printf("个人信息如下:\n");
        System.out.printf("姓名: %-10s 年龄: %-3d 职业: %-10s 城市: %-10s\n", name, age, occupation, city);
    }
}

运行结果
个人信息如下:
姓名: 张三 年龄: 25 职业: 软件工程师 城市: 上海
代码解析

  • Java源文件保存为“PersonalInfoFormatted.java”。
  • 定义了四个变量分别存储姓名、年龄、职业和城市信息。
  • 使用System.out.printf进行格式化输出,使输出更加整齐美观。

常见错误及解决方法

1.变量未定义错误:
错误表现:编译时提示“找不到符号”或“变量未定义”。
解决方法:确保在使用变量之前已经定义并初始化。

2.数据类型不匹配错误:
错误表现:编译时提示“不兼容的类型”或运行时出现异常。
解决方法:检查数据类型,确保它们兼容或进行适当的类型转换。

3.输入输出异常:
错误表现:运行时提示InputMismatchException等异常。
解决方法:确保输入的数据类型与程序期望的类型一致,或使用异常处理机制捕获并处理异常。

4.资源未关闭错误:
错误表现:可能导致资源泄漏,如Scanne对象未关闭。
解决方法:在使用完资源后,确保调用close()方法关闭资源。

知识总结

  • 顺序结构是Java中最基本的程序结构,按照代码书写的顺序依次执行。
  • 顺序结构简单直接,易于理解和实现,是构建复杂程序逻辑的基础。
  • 在编写顺序结构代码时,应注意变量定义、数据类型匹配和语法正确性。

理论练习

问答题:顺序结构中,程序是如何执行的?
参考答案:顺序结构中,程序按照代码书写的顺序依次执行,不跳过任何一行,也不重复执行任何一行。

选择题:以下哪个不是顺序结构的特点?
A.简单直接 B.可以包含分支 C.易于理解和实
参考答案:B。可以包含分支(顺序结构不包含分支或循环)

选择题:顺序结构中,程序是如何执行的? A.随机执行 B.按照代码书写的顺序依次执行 C.根据条件判断执行 D.循环执行
参考答案:B。

填空题:在Java中,顺序结构是程序按照代码书写的顺序依次执行,没有___、
参考答案:分支、循环、跳转

判断题:顺序结构是Java中最复杂的程序结构。 参考答案:×。顺序结构是Java中最简单的程序结构。

实操练习

练习:编写一个Java程序,计算并输出两个整数的乘积。
参考答案

public class MultiplicationCalculator {
    public static void main(String[] args) {
        int num1 = 10;
        int num2 = 5;
        int product = num1 * num2;
        System.out.println("两数之积为: " + product);
    }
}

运行结果
两数之积为: 50
说明:Java源文件保存为“MultiplicationCalculator.java”。

练习:编写一个Java程序,计算并输出两个浮点数的商。
参考答案

import java.util.Scanner;

public class DivisionCalculator {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        
        System.out.print("请输入第一个浮点数: ");
        double num1 = scanner.nextDouble();
        
        System.out.print("请输入第二个浮点数: ");
        double num2 = scanner.nextDouble();
        
        if (num2 != 0) { // 检查除数是否为0
            double quotient = num1 / num2;
            System.out.println("两数之商为: " + quotient);
        } else {
            System.out.println("除数不能为0!");
        }
        
        scanner.close();
    }
}

运行结果
请输入第一个浮点数: 12.8
请输入第二个浮点数: 6.4
两数之商为: 2.0
说明:Java源文件保存为“DivisionCalculator.java”。

练习:编写一个Java程序,输出你的姓名、年龄和所在城市。
参考答案

public class PersonalDetails {
    public static void main(String[] args) {
        String name = "李四";
        int age = 30;
        String city = "北京";
        System.out.println("姓名: " + name);
        System.out.println("年龄: " + age);
        System.out.println("所在城市: " + city);
    }
}

运行结果
姓名: 李四
年龄: 30
所在城市: 北京
说明:Java源文件保存为“PersonalDetails.java”。

练习:编写一个Java程序,输出你的姓名、年龄、所在城市和爱好。
正确答案

public class PersonalDetailsExtended {
    public static void main(String[] args) {
        String name = "李四";
        int age = 30;
        String city = "北京";
        String hobby = "阅读";
        
        System.out.println("个人信息如下:");
        System.out.println("姓名: " + name);
        System.out.println("年龄: " + age);
        System.out.println("所在城市: " + city);
        System.out.println("爱好: " + hobby);
    }
}

运行结果
姓名: 李四
年龄: 30
所在城市: 北京
爱好: 阅读
说明:Java源文件保存为“PersonalDetails.java”。