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();
}
}
}
网友评论