Java 中空心矩形或方形星形图案

2025年5月12日 | 阅读 5 分钟

在编程中,打印不同形状和类型的星形图案可以是一项有趣的练习。通过打印这类图案可以增强对嵌套循环的理解。因此,在本节中,我们将通过不同的逻辑来理解如何在 Java 中打印空心矩形或正方形星形图案

空心矩形图案

空心意味着内部有一个孔或空(非实心)的空间。因此,空心矩形或正方形图案是由其边界包围且内部为空的形状。例如,请看下图。

Hollow Rectangle or Square Star Patterns in Java

打印空心矩形或正方形图案的 Java 程序

打印空心矩形或正方形星形图案有多种方法。在本节中,我们将讨论以下三种方法:

  • 使用嵌套循环
  • 使用数组
  • 使用递归

使用嵌套循环

在打印图案的程序中,嵌套循环方法很简单。在此方法中,我们创建两个循环:外层循环和内层循环。

外层循环:它负责迭代空心矩形图案的每一行(从 1 到 n)。

内层循环:它负责在空心矩形图案的当前行中迭代每一列(从 1 到 m)。

边界条件:该条件确保在边界(第一行、最后一行、第一列和最后一列)打印星号(*),否则打印空格。

此条件确保在矩形或正方形的边界上打印星号(*)。让我为您详细解释一下:

  • i == 1:这检查是否为第一行。
  • i == n:这检查是否为最后一行。
  • j == 1:这检查是否为第一列。
  • j == m:这检查是否为最后一列。

如果上述任何条件为真,则表示当前位置在边界上(无论是第一行、最后一行还是第一列、最后一列),并且将打印一个星号(*)。如果这些条件都不为真,则会打印一个空格()而不是星号。

打印完一行的所有列后,在内层循环之后打印一个新行。

让我们在 Java 程序中实现上述逻辑。

输出

Hollow Rectangle or Square Star Patterns in Java

使用数组

在此方法中,初始化一个代表正方形或矩形网格的二维字符 数组。然后,根据其位置用星号和空格填充数组。

边界位置

  • i == 0 或 i == rows - 1 检查第一行和最后一行。
  • j == 0 或 j == col - 1 检查第一列和最后一列。

内部位置

  • 不在边界上的任何位置都用空格“ ”填充。

现在,打印数组以显示图案。

输出

Hollow Rectangle or Square Star Patterns in Java

为什么要使用数组?

  • 数据操作:它允许我们在打印前操作图案。如果我们想进行修改或应用转换,这将非常有用。
  • 关注点分离:将图案生成与打印分离开来,可以使代码更清晰、更易于维护。
  • 灵活性:它可以被传递给方法、存储或独立于显示逻辑进行修改。

使用递归

在此方法中,我们首先从用户那里获取矩形的输入宽度和高度。之后,定义一个名为 printHollowRectangle() 的 递归函数,该函数接受三个参数:width、heightcurrentRow

基本情况:当 currentRow 等于或大于 height 时,递归停止。它确保程序不会尝试打印超过指定行数的行。

行打印逻辑:嵌套循环迭代当前行的每一列。

  1. 程序打印矩形的第一行和最后一行,以及第一列和最后一列的星号(*)。
  2. 对于所有其他位置,它会打印空格。

打印完当前行后,会生成一个新行以移至下一行。

然后,该方法通过将 currentRow 增加一,递归地调用自身,从而逐行进行,直到满足基本情况。

让我们在 Java 程序中实现上述逻辑。

输出

Hollow Rectangle or Square Star Patterns in Java

为什么要使用递归?

递归可以将某些类型的问题分解成更小、更易于管理的子问题,从而简化它们。虽然它不一定是解决此类问题的最有效方法,但它是加深您对递归逻辑理解的绝佳练习。


下一主题Boyer Moore Java