Java程序实现打印带对角线与不带对角线的方星图案

需积分: 5 0 下载量 199 浏览量 更新于2024-08-03 收藏 22KB DOCX 举报
"打印方星图案的Java程序" 在编程中,经常需要生成各种图形,其中一种常见的练习就是打印星形图案。本文将详细介绍如何使用Java语言编写程序来打印两种不同类型的方星图案:无对角线的星形方形图案和带有对角线的星形方形图案。 首先,我们需要了解基本的循环结构,这通常是通过嵌套的`for`循环实现的。在Java中,`for`循环是一种控制流语句,用于重复执行一段代码直到满足特定条件为止。在打印图案的场景中,外层循环通常控制行数,而内层循环则控制每行中的列数。 对于无对角线的星形方形图案,程序会按照以下步骤操作: 1. 用户输入行数(rows)和列数(columns)。 2. 使用外层`for`循环,从1遍历到行数(rows)。 3. 在外层循环内部,用另一个`for`循环从1遍历到列数(columns)。 4. 设计条件判断,决定何时打印星号(*)和空格。例如,当行数或列数为1(第一行或最后一行)或当前行数等于列数(第一列或最后一列)时,打印星号;其他情况下打印空格。 5. 内层循环结束后,打印一个换行符,以便开始下一行。 下面是一个无对角线星形方形图案的Java代码示例: ```java public class GFG { public static void main(String[] args) { int rows = 7, columns = 7; print_rectangle(rows, columns); } // 打印无对角线的星形方形图案 static void print_rectangle(int k, int l) { for (int a = 1; a <= k; a++) { for (int b = 1; b <= l; b++) { if (a == 1 || a == k || b == 1 || b == l) { System.out.print("*"); } else { System.out.print(" "); } } System.out.println(); } } } ``` 此程序的时间复杂度为O(R*C),其中R是行数,C是列数,因为每个元素都需要被检查一次。辅助空间为O(1),因为它只使用了常量级别的额外空间。 接下来,我们考虑带有对角线的星形方形图案。在这个版本中,除了边界星号,还需要在对角线上打印星号。可以使用两个额外的变量来跟踪对角线,如下所示: ```java public class GFG { public static void main(String[] args) { int rows = 9, columns = 9; print_solid_rectangle(rows, columns); print_diagonal_rectangle(rows, columns); } // 打印带有对角线的星形方形图案 static void print_diagonal_rectangle(int k, int l) { for (int a = 1; a <= k; a++) { for (int b = 1; b <= l; b++) { if (a + b == k + 1 || a - b == k - 1) { System.out.print("*"); } else if (a == 1 || a == k || b == 1 || b == l) { System.out.print("*"); } else { System.out.print(" "); } } System.out.println(); } } } ``` 这个程序的时间复杂度为O(N^2),其中N是给定的行数,因为每个元素都需要被检查以确定是否位于对角线上。同样,辅助空间仍然是O(1)。 通过这些简单的程序,我们可以理解如何使用Java的基本结构来创建图形,并学习如何根据需求调整逻辑来生成不同的图案。这些基础知识对于学习更复杂的算法和数据结构非常有帮助。