打印菱形(Java)

    技术2023-09-27  92

    Java打印菱形 先看效果:

    题目分析 1、星号前面的空白要用空格代替。 2、把图形分为上下两部分,分别找出行数与“空格”和“*”的关系

    上半部分(正三角):

    空格个数与行数的关系 橘色框:代表行号。 红色框:正三角形成的最大行号(maxNum)。计算公式:(总行数 + 1)/ 2               比如,图中一共7行,则:maxNum = (7 + 1) / 2 = 4               空格的数量 = maxNum - 当前行号

    星号与行数的关系 每一行的星号个数 = 2 * 当前行号 - 1;

    下半部分(倒三角):这个稍微复杂一点,需要花费时间计算。

    空格个数与行数的关系 蓝色框:打印倒三角需要的行数(循环几次),建议倒着计算比较方便。               计算公式:总行数 - 正三角形成的最大行数               比如,图中一共7行则:7 - 4 = 3,表示倒三角共需要3行。               空格的数量 = maxNum - 当前行号 绿色框:正三角形成的最大行数(maxNum)。计算公式:(总行数 + 1)/ 2               比如,图中一共7行,则:maxNum = (7 + 1) / 2 = 4

    星号与行数的关系 每一行的星号个数 = 2 * 当前行数 - 1;

    public class LingXing {     public static void main(String[] args) {         // 行数,奇数         int row = 7;         // 内容最多的一行的行数         int maxNum = (row + 1) / 2;                  // 正三角         for(int i = 1; i <= maxNum; i++) {             // 空格             for(int j = 1; j <= maxNum- i; j++) {                 System.out.print(" ");             }             // 内容             for(int k = 1; k <= (2 * i) - 1; k++) {                 System.out.print("*");             }             // 换行             System.out.println();         }         // 正三角                  // 倒三角         for(int i = row - maxNum; i > 0; i--) {             // 空格             for(int j = 1; j <= maxNum - i; j++) {                 System.out.print(" ");             }             // 内容             for(int k = 1; k <= 2 * i -1; k++) {                 System.out.print("*");             }             // 换行             System.out.println();         }         // 倒三角     } }  

    Processed: 0.011, SQL: 10