需要实现的效果如下:
- * * * * * * * * *
- * * * * * * *
- * * * * *
- * * *
- *
- * * *
- * * * * *
- * * * * * * *
- * * * * * * * * *
-
虽然做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行,结果 如下:
- * * * * * * * * *
- * * * * * * *
- * * * * *
- * * *
- *
- * * *
- * * * * *
- * * * * * * *
- * * * * * * * * *
-