[算法] java极简 之 打印菱形

基本思路

  1. 双层for循环,外层控制行,内层决定列
  2. 只需输出左侧空白数+当前行星数,可得内层列宽限制条件。
  3. 考虑到菱形对称性, 用数学绝对值函数依赖行号计算单侧空白点位数。
  4. 让列宽动态依赖于行数变化,右侧空白不输出

代码

好的代码会说话,码上见!!!

public class Diamond {

    public static void printStar(int size)
    {   
        // 确保为大小为奇数
        if(size % 2 == 0)
        {
            size++;
        }

        // 双层循环,外部控制行,内控制列
        for(int i=0; i< size; i++)
        {
            // 当前行单边空白数
            int blank = Math.abs(size/2 - i);

            for(int j=0; j < size - blank; j++)
            {
                if(j>=blank) {
                    System.out.print("*");
                }else {
                    System.out.print("-");
                }
            }
            // 换行
            System.out.println();
        }
    }

    public static void main(String[] args) {
        // 打印
        printStar(8);
    }
}

效果如下

----*
---***
--*****
-*******
*********
-*******
--*****
---***
----*

猜你喜欢

转载自blog.csdn.net/u011584949/article/details/82290076