在Java编程中,打印三角形是学习循环结构和逻辑控制的经典练习,通过不同类型的三角形图案,可以深入理解嵌套循环、条件判断等核心概念,本文将从基础直角三角形出发,逐步讲解等腰三角形、倒三角形、空心三角形等常见图案的实现方法,并分析其中的逻辑要点和代码细节。

基础直角三角形(左对齐)
左对齐的直角三角形是最简单的三角形图案,其特点是每行的星号数量与行数相等,打印5行左对齐直角三角形,第1行1个星号,第2行2个星号,依此类推,第n行n个星号。
实现逻辑
核心思路是使用两层嵌套循环:外层循环控制行数(从1到n),内层循环控制每行星号的打印数量(从1到当前行数),具体步骤如下:
- 外层循环变量
i表示当前行号,范围从1到n; - 内层循环变量
j表示当前行星号的序号,范围从1到i; - 每次内层循环打印一个星号(),不换行;
- 内层循环结束后,通过换行符(
\n或System.out.println())切换到下一行。
代码示例
public class LeftTriangle {
public static void main(String[] args) {
int n = 5; // 三角形行数
for (int i = 1; i <= n; i++) {
for (int j = 1; j <= i; j++) {
System.out.print("* "); // 打印星号,加空格分隔
}
System.out.println(); // 换行
}
}
}
输出结果
关键点
System.out.print()用于不换行打印,System.out.println()用于换行;- 星号后加空格()可以使图案更整齐,避免星号粘连;
- 外层循环的终止条件决定三角形的行数,内层循环的终止条件决定每行的星号数量。
直角三角形(右对齐)
右对齐的直角三角形在左对齐的基础上,每行前面需要补充一定数量的空格,使所有星号右对齐,5行右对齐三角形,第1行4个空格+1个星号,第2行3个空格+2个星号,依此类推,第n行0个空格+n个星号。
实现逻辑
与左对齐类似,但需要在打印星号前先打印空格,空格数量计算公式为:总行数 - 当前行数,具体步骤:
- 外层循环控制行数
i(从1到n); - 内层循环分为两部分:第一部分打印空格(数量为
n - i),第二部分打印星号(数量为i); - 先打印空格,再打印星号,确保星号右对齐。
代码示例
public class RightTriangle {
public static void main(String[] args) {
int n = 5;
for (int i = 1; i <= n; i++) {
// 打印空格
for (int j = 1; j <= n - i; j++) {
System.out.print(" "); // 两个空格,与星号宽度对齐
}
// 打印星号
for (int j = 1; j <= i; j++) {
System.out.print("* ");
}
System.out.println();
}
}
}
输出结果
关键点
- 空格的数量需根据行数动态计算,确保每行星号右对齐;
- 空格的宽度应与星号宽度一致(如星号带空格,则空格用),避免对齐混乱;
- 空格循环在内层星号循环之前,保证先打印空格再打印星号。
等腰三角形
等腰三角形是经典的对称三角形,特点是每行首尾星号对称,中间星号数量为奇数(1, 3, 5,…),5行等腰三角形,第1行4个空格+1个星号,第2行3个空格+3个星号,第3行2个空格+5个星号,依此类推。

实现逻辑
等腰三角形结合了右对齐的空格逻辑和星号数量的动态计算,核心公式:
- 空格数量:
n - i(i为当前行数); - 星号数量:
2 * i - 1(确保每行星号为奇数,且对称增长)。
具体步骤:
- 外层循环控制行数
i(从1到n); - 第一内层循环打印空格(数量
n - i); - 第二内层循环打印星号(数量
2 * i - 1); - 换行进入下一行。
代码示例
public class IsoscelesTriangle {
public static void main(String[] args) {
int n = 5;
for (int i = 1; i <= n; i++) {
// 打印空格
for (int j = 1; j <= n - i; j++) {
System.out.print(" ");
}
// 打印星号
for (int j = 1; j <= 2 * i - 1; j++) {
System.out.print("* ");
}
System.out.println();
}
}
}
输出结果
关键点
- 星号数量公式
2 * i - 1是核心,确保每行星号呈奇数增长,形成对称; - 空格数量与右对齐三角形一致,保证整体居中;
- 星号后加空格可使图案更饱满,避免星号紧密排列。
倒三角形
倒三角形是将正三角形(如等腰三角形或直角三角形)上下翻转后的图案,特点是行数递减,每行的星号或空格数量动态减少,以等腰倒三角形为例,5行倒三角形的第1行9个星号(2*5-1),第2行7个星号,依此类推,第5行1个星号。
实现逻辑
倒三角形的实现与正三角形类似,只需将外层循环的起始值和终止值调整即可,核心思路:
- 外层循环从
n递减到1,控制行数; - 空格数量:
n - i(i为当前行数,但i从n递减,空格数量逐渐增加); - 星号数量:
2 * i - 1(i递减,星号数量逐渐减少)。
代码示例
public class InvertedTriangle {
public static void main(String[] args) {
int n = 5;
for (int i = n; i >= 1; i--) {
// 打印空格
for (int j = 1; j <= n - i; j++) {
System.out.print(" ");
}
// 打印星号
for (int j = 1; j <= 2 * i - 1; j++) {
System.out.print("* ");
}
System.out.println();
}
}
}
输出结果
关键点
- 外层循环采用
for (int i = n; i >= 1; i--)实现行数递减; - 空格和星号数量的计算公式与正三角形一致,但需注意i的递减趋势;
- 可通过调整循环方向(正序/倒序)快速实现正倒图案转换。
空心三角形
空心三角形是指三角形的边界由星号组成,内部为空格的图案,以等腰空心三角形为例,5行空心三角形的第1行1个星号,第2、3行首尾各1个星号,第4行首尾及中间星号,第5行全部星号(或仅边界,根据需求调整)。

实现逻辑
空心三角形的核心是判断当前打印位置是否在边界上,边界条件包括:
- 第一行或最后一行:打印所有星号;
- 其他行的首列或末列:打印星号,否则打印空格。
具体步骤:
- 外层循环控制行数
i(从1到n); - 第一内层循环打印空格(数量
n - i); - 第二内层循环打印星号或空格,通过条件判断:
- 若
i == 1(第一行)或i == n(最后一行),打印星号; - 否则,若
j == 1(首列)或j == 2 * i - 1(末列),打印星号,否则打印空格。
- 若
代码示例
public class HollowTriangle {
public static void main(String[] args) {
int n = 5;
for (int i = 1; i <= n; i++) {
// 打印空格
for (int j = 1; j <= n - i; j++) {
System.out.print(" ");
}
// 打印星号或空格
for (int j = 1; j <= 2 * i - 1; j++) {
if (i == 1 || i == n || j == 1 || j == 2 * i - 1) {
System.out.print("* ");
} else {
System.out.print(" "); // 内部打印空格
}
}
System.out.println();
}
}
}
输出结果
关键点
- 条件判断是空心三角形的核心,需明确边界条件(首行、末行、首列、末列);
- 内部空格的宽度应与星号宽度一致(如),避免对齐错误;
- 可通过调整条件实现不同的空心效果(如仅两侧空心,底部实心等)。
总结与扩展
打印三角形的核心在于控制循环结构和动态计算打印内容,通过嵌套循环实现行数、空格、星号的精确控制,从基础的左对齐直角三角形到复杂的空心三角形,关键在于理解每行打印内容的规律,并通过循环变量和条件判断实现动态调整。
进一步扩展,可尝试打印菱形(两个等腰三角形组合)、数字三角形(用数字替代星号)、字符三角形(用字母表字符)等图案,或通过调整循环步长、符号样式实现更丰富的视觉效果,掌握三角形打印的逻辑,不仅能提升Java编程能力,还能为后续学习图形界面、算法逻辑等打下坚实基础。

















