需要实现的效果如下:
* * * * * * * * *
* * * * * * *
* * * * *
* * *
*
* * *
* * * * *
* * * * * * *
* * * * * * * * *
虽然做Java开发很多年了,但是这种练习不常做,做起来不难,但是也是需要花费一点时间的,这里记录一下思路,供大家参数:
public class Main {
public static void main(String[] args) throws Exception {
printStar(3);
}
/**
* 打印一个倒三解和一个正三角
* @param oneTriangleTotalLine 一个三角形的总行数
*/
public static void printStar(int oneTriangleTotalLine) {
// 打印倒三角
for (int currentLine = oneTriangleTotalLine; currentLine > 0; currentLine--) {
printFrontSpace(oneTriangleTotalLine, currentLine);
printOneLineStar(currentLine, oneTriangleTotalLine > 1);
}
// 打印正三角
for (int currentLine = 2; currentLine <= oneTriangleTotalLine; currentLine++) {
printFrontSpace(oneTriangleTotalLine, currentLine);
printOneLineStar(currentLine, currentLine < oneTriangleTotalLine);
}
}
/**
* 打印一行星星
* @param currentLine 当前是第几行的星星
* @param needBr 是否需要换行
*/
private static void printOneLineStar(int currentLine, boolean needBr) {
int starCount = 1 + (currentLine - 1) * 2;
for (int i = 0; i < starCount; i++) {
System.out.print("*");
if (i < (starCount - 1)) {
// 如果不是一行中的最后一稞星,则还需要输出一个空格
System.out.print(" ");
}
}
if (needBr) {
// 需要换行
System.out.println();
}
}
/**
* 打印一行星星前面的空格
* @param oneTriangleTotalLine 一个三角形的总行数
* @param currentLine 当前是第几行
*/
private static void printFrontSpace(int oneTriangleTotalLine, int currentLine) {
int spaceCount = (oneTriangleTotalLine - currentLine) * 2;
for (int i = 0; i < spaceCount; i++) {
System.out.print(" ");
}
}
}
如输入一个三角形的行数为5行,结果 如下:
* * * * * * * * *
* * * * * * *
* * * * *
* * *
*
* * *
* * * * *
* * * * * * *
* * * * * * * * *