Java星号打印图形Top-Down设计

2019-03-07  本文已影响0人  月影追猎者

Top-Down设计:将复杂问题划分为简单问题,找出问题的关键,定性或定量描述问题。

package com.jingdianxi.practice;

/**
 * 星号打印图形Top-Down设计
 * @author JingDianxi
 */
public class StarUtil {

    /**
     * 正方形
     * @param n 边长
     */
    public void square(int n) {
        for (int i = 0; i < n; i++) {
            for (int j = 0; j < n; j++) {
                System.out.print("*");
            }
            System.out.println();
        }
    }

    /**
     * 等腰直角三角形,直角在左下
     * @param n 直角边长
     */
    public void lowLeftRightTri(int n) {
        for (int i = 0; i < n; i++) {
            for (int j = 0; j < i + 1; j++) {
                System.out.print("*");
            }
            System.out.println();
        }
    }

    /**
     * 等腰直角三角形,直角在左上
     * @param n 直角边长
     */
    public void upLeftRightTri(int n) {
        for (int i = 0; i < n; i++) {
            for (int j = 0; j < n - i; j++) {
                System.out.print("*");
            }
            System.out.println();
        }
    }

    /**
     * 等腰三角形,左右两边相等
     * @param n 高度
     */
    public void isoscelesTri(int n) {
        for (int i = 0; i < n; i++) {
            // 输出空格
            // 第1行,i=0,输出n-1(n-1-0)个空格
            // 第2行,i=1,输出n-2(n-1-1)个空格
            // 第n行,i=n-1,输出0(n-1-(n-1))个空格
            // 所以,每行输出n-1-i个空格
            for (int j = 0; j < n - 1 - i; j++) {
                System.out.print(" ");
            }
            // 输出星号
            // 第1行,i=0,输出1(2*0+1)个星号
            // 第2行,i=1,输出3(2*1+1)个星号
            // 第n行,i=n-1,输出2*(n-1)+1个星号
            // 所以,每行输出2*i+1个星号
            for (int j = 0; j < 2 * i + 1; j++) {
                System.out.print("*");
            }
            System.out.println();
        }
    }

    public void diamond(int n) {
        // 输出上半部分,n行
        for (int i = 0; i < n; i++) {
            // 输出空格
            for (int j = 0; j < n - 1 - i; j++) {
                System.out.print(" ");
            }
            // 输出星号
            for (int j = 0; j < 2 * i + 1; j++) {
                System.out.print("*");
            }
            System.out.println();
        }
        // 输出下半部分,n-1行
        for (int i = 0; i < n - 1; i++) {
            // 输出空格
            // 第1行,i=0,输出1(0+1)个空格
            // 第2行,i=1,输出2(1+1)个空格
            // 第n-1行,i=n-2,输出n-1(n-2+1)个空格
            // 所以,每行输出i+1个空格
            for (int j = 0; j < i + 1; j++) {
                System.out.print(" ");
            }
            // 输出星号
            // 第1行,i=0,输出2*(n-1)-1(2*(n-1-0)-1)个星号
            // 第2行,i=1,输出2*(n-2)-1(2*(n-1-1)-1)个星号
            // 第n-1行,i=n-2,输出1(2*(n-1-(n-2))-1)个星号
            // 所以,每行输出2*(n-1-i)-1,即2*n-3-2*i个星号
            for (int j = 0; j < 2 * n - 3 - 2 * i; j++) {
                System.out.print("*");
            }
            System.out.println();
        }
    }
}
上一篇 下一篇

猜你喜欢

热点阅读