用Java程序写这个文档中的图案
时间: 2024-12-06 20:23:18 浏览: 7
好的,以下是根据您提供的文档要求编写的Java程序,用于绘制指定的图形:
```java
public class GraphicDrawer {
public static void main(String[] args) {
int rows = 5; // 图形的总行数
int cols = 3; // 图形的总列数
int rowsOfGraphic = 5; // 每个小图形的行数(必须是奇数)
int beginSpaceNumber = 2; // 每行第一个图形前的空白个数
int middleSpaceNumber = 4; // 每行图形之间的空个数
drawGraphics(rows, cols, rowsOfGraphic, beginSpaceNumber, middleSpaceNumber);
}
public static void drawGraphics(int rows, int cols, int rowsOfGraphic, int beginSpaceNumber, int middleSpaceNumber) {
for (int i = 0; i < rows * rowsOfGraphic; i++) {
// 打印每行开头的空格
for (int j = 0; j < beginSpaceNumber; j++) {
System.out.print(" ");
}
// 绘制每个小图形
for (int k = 0; k < cols; k++) {
if (i % rowsOfGraphic < rowsOfGraphic / 2 + 1) {
// 上半部分和中间行
for (int m = 0; m < rowsOfGraphic - Math.abs(i % rowsOfGraphic - rowsOfGraphic / 2); m++) {
System.out.print("*");
}
} else {
// 下半部分
for (int m = 0; m < Math.abs(i % rowsOfGraphic - rowsOfGraphic / 2); m++) {
System.out.print("*");
}
}
// 打印图形之间的空格
if (k != cols - 1) {
for (int m = 0; m < middleSpaceNumber; m++) {
System.out.print(" ");
}
}
}
// 换行
System.out.println();
}
}
}
```
### 解释
1. **参数说明**:
- `rows`: 总行数。
- `cols`: 总列数。
- `rowsOfGraphic`: 每个小图形的行数(必须是奇数)。
- `beginSpaceNumber`: 每行第一个图形前的空白个数。
- `middleSpaceNumber`: 每行图形之间的空个数。
2. **绘图逻辑**:
- 外层循环 `for (int i = 0; i < rows * rowsOfGraphic; i++)` 控制总的行数。
- 内层循环 `for (int j = 0; j < beginSpaceNumber; j++)` 打印每行开头的空格。
- 内层循环 `for (int k = 0; k < cols; k++)` 控制每一行中的多个小图形。
- 根据当前行号 `i % rowsOfGraphic` 判断是上半部分还是下半部分。
- 使用 `Math.abs` 计算出需要打印星号的数量。
- 最后换行 `System.out.println()`。
希望这段代码能满足您的需求!如果有任何问题或需要进一步修改,请告诉我。
阅读全文