1.打印空心菱形可以先简化--->上三角形与下三角形;
2.打印上三角形可以先简化-->打印左半部分三角形即可以用for循环控制,外层循环控制层数,内层循环控制*的数量;
3.我们再找菱形上三角形空格的规律,会发现层数与空格数会有一定的关系;假如上三角是4层,1层<-->3个空格 2层<-->2个空格 3层<-->1个空格...;
4.我们再找空心的规律,也以上本层为例,第一层与最后一层都需要打*,中间的部分再考虑*的位置,即每层第一个*和最后一个*需要打印;
5.下三角形以此类推。
package com.test;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
/**
* 功能:打印菱形图案
*
* @author sunshine
*
*/
public class Test {
public static void main(String[] args) {
InputStreamReader isr = new InputStreamReader(System.in);
BufferedReader br = new BufferedReader(isr);
try {
System.out.println("请输入您要打印的层数(上三角形行数:)");
String str = br.readLine();
int lay = Integer.parseInt(str);
// 控制层数
for (int i = 1; i <= 4; i++) {
// 控制空格数
for (int k = 1; k <= lay - i; k++) {
System.out.print(" ");
}
// 控制*个数
for (int j = 1; j <= 2 * i - 1; j++) {
if (i == 1) {
System.out.print("*");
} else {
if (j == 1 || j == 2 * i - 1) {
System.out.print("*");
} else {
System.out.print(" ");
}
}
}
System.out.println();
}
// 控制层数
for (int m = 1; m <= lay - 1; m++) {
// 控制空格数
for (int n = 1; n <= m; n++) {
System.out.print(" ");
}
// 控制*数
for (int g = 1; g <= 2 * lay - 1 - 2 * m; g++) {
if (m == lay - 1) {
System.out.print("*");
} else {
if (g == 1 || g == 2 * lay - 2 * m - 1) {
System.out.print("*");
} else {
System.out.print(" ");
}
}
}
System.out.println();
}
} catch (IOException e) {
e.printStackTrace();
}
}
}