打印菱形(Java)

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();
        }
        // 倒三角
    }
}
 

打印一个空心菱形的java程序,可以使用以下代码: ```java public class Diamond { public static void main(String[] args) { int line = 9; // 菱形的总行数 // 上半部分的正三角形 for (int i = 1; i <= line / 2 + 1; i++) { // 输出对应的空格 for (int j = 1; j <= line / 2 + 1 - i; j++) { System.out.print(" "); } // 控制每层打印*的个数 for (int k = 1; k <= 2 * i - 1; k++) { if (k == 1 || k == 2 * i - 1) { // 第一个和最后一个位置打印* System.out.print("*"); } else { // 其他位置为空格 System.out.print(" "); } } System.out.println(); // 每打印完一层*,换行 } // 下半部分的倒三角形 for (int i = 1; i <= line / 2; i++) { // 输出对应的空格 for (int j = 1; j <= i + 1; j++) { System.out.print(" "); } // 控制每层打印*的个数 for (int k = 1; k <= 2 * (line / 2 - i) - 1; k++) { if (k == 1 || k == 2 * (line / 2 - i) - 1) { // 第一个和最后一个位置打印* System.out.print("*"); } else { // 其他位置为空格 System.out.print(" "); } } System.out.println(); // 每打印完一层*,换行 } } } ``` 以上是一个完整的打印空心菱形的Java程序。你可以根据需要自定义菱形的总行数来打印不同大小的空心菱形。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* *3* [Java打印输出空心菱形](https://blog.csdn.net/MY_LXY/article/details/130031776)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT0_1"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值