左下直角三角形每行星号数等于行号,无需空格;右下直角三角形每行空格数为n−i、星号数为i,需双层循环控制。

用循环打印直角三角形,关键是控制每行的空格数和星号数。常见的是左对齐(顶点在左下或左上)和右对齐(顶点在右下,需空格缩进)。下面以最常用的“左下直角、靠左对齐”和“右下直角、靠右对齐”两种为例,讲清空格与星号的规律和写法。
左下直角三角形(不带空格,纯星号)
这是最基础的形式:第1行1个*,第2行2个*,……第n行n个*。不需要空格,只用一个内层循环控制星号数量:
for (int i = 1; i <= n; i++) {
for (int j = 1; j <= i; j++) {
System.out.print("*");
}
System.out.println(); // 换行
}右下直角三角形(需要空格缩进)
顶点在右下角,图形靠右对齐。要让第i行有i个星号,且整体右对齐,就得在星号前补足空格。假设总行数为n,那么第i行应有 (n - i) 个空格,再跟i个星号:
- 第1行:n−1个空格 + 1个*
- 第2行:n−2个空格 + 2个*
- ……
- 第n行:0个空格 + n个*
对应代码:
立即学习“Java免费学习笔记(深入)”;
for (int i = 1; i <= n; i++) {
// 打印空格
for (int j = 1; j <= n - i; j++) {
System.out.print(" ");
}
// 打印星号
for (int k = 1; k <= i; k++) {
System.out.print("*");
}
System.out.println();
}控制格式的小技巧
- 用
System.out.print()连续输出不换行,System.out.println()换行 - 空格用
" "(字符串),别用' '(char)混用——虽然通常能自动转换,但保持类型一致更稳妥 - 想打印等宽效果(比如在终端对齐),确保字体是等宽字体(如 Consolas、Monospace),否则空格和星号宽度可能不一致
- 调试时可在每行开头加行号,例如
System.out.print("[" + i + "] ");,方便核对空格和星号数量
扩展:倒置直角三角形(顶点在左上)
如果要顶点朝上,只需把行数倒过来:第1行n个*,第2行n−1个*……
for (int i = n; i >= 1; i--) {
for (int j = 1; j <= i; j++) {
System.out.print("*");
}
System.out.println();
}若要顶点朝上且靠右,则每行空格数为 i − 1(因为最大行n个星号无空格,最小行1个星号前面有n−1个空格)。



















