JAVA如何画出菱形
使用循环绘制菱形
在Java中绘制菱形可以通过嵌套循环实现,通常需要控制空格和星号的输出数量。以下是一个基础实现示例:
public class DiamondPattern {
public static void main(String[] args) {
int n = 5; // 菱形高度的一半(总行数为2n-1)
// 上半部分
for (int i = 1; i <= n; i++) {
for (int j = 1; j <= n - i; j++) {
System.out.print(" ");
}
for (int k = 1; k <= 2 * i - 1; k++) {
System.out.print("*");
}
System.out.println();
}
// 下半部分
for (int i = n - 1; i >= 1; i--) {
for (int j = 1; j <= n - i; j++) {
System.out.print(" ");
}
for (int k = 1; k <= 2 * i - 1; k++) {
System.out.print("*");
}
System.out.println();
}
}
}
参数化菱形绘制方法
将上述逻辑封装为可复用的方法,支持自定义菱形大小:
public static void printDiamond(int size) {
if (size % 2 == 0) size++; // 确保为奇数行
int mid = size / 2;
for (int row = 0; row < size; row++) {
int spaces = Math.abs(mid - row);
int stars = size - 2 * spaces;
System.out.println(" ".repeat(spaces) + "*".repeat(stars));
}
}
使用图形库绘制
若需在图形界面中绘制,可使用Java的Graphics类:
import javax.swing.*;
import java.awt.*;
public class DiamondGUI extends JPanel {
@Override
protected void paintComponent(Graphics g) {
super.paintComponent(g);
int[] xPoints = {100, 150, 100, 50};
int[] yPoints = {50, 100, 150, 100};
g.drawPolygon(xPoints, yPoints, 4);
}
public static void main(String[] args) {
JFrame frame = new JFrame();
frame.add(new DiamondGUI());
frame.setSize(200, 200);
frame.setVisible(true);
}
}
空心菱形实现
修改星号输出逻辑即可实现空心效果:
for (int i = 1; i <= n; i++) {
for (int j = 1; j <= n - i; j++) {
System.out.print(" ");
}
for (int k = 1; k <= 2 * i - 1; k++) {
System.out.print(k == 1 || k == 2*i-1 ? "*" : " ");
}
System.out.println();
}
数学公式说明
菱形每行的星号数量遵循等差数列:

- 上半部分星号数:$a_i = 2i - 1$
- 下半部分星号数:$a_i = 2(n-i) - 1$
- 空格数:$s_i = |n - i|$
其中$n$为菱形中心行的星号数,$i$为当前行号。




