上一篇
Java中,可嵌套循环控制行与列打印反三角图案,外层循环控行数、内层处理空格和符号。
Java中打印反三角形(倒立三角形)是一个经典的编程练习,主要考察对循环结构和字符串操作的理解,以下是详细的实现步骤、代码示例及扩展方法:
基础思路解析
-
核心原理:通过双重循环实现——外层循环控制行数递减,内层循环处理每行的空格与符号数量,若总行数为
n,则第i行需要打印(n−i)个前置空格和(2i−1)个目标字符(如),这种模式能确保图形呈现标准的等腰倒三角形结构。 -
关键参数设置:假设用户输入的行数存储于变量
rows中,那么对于每一行i(从rows到1):- 前置空格数 =
rows i - 符号数量 =
2i 1
- 前置空格数 =
-
边界条件验证:需特别注意当
rows≤0时的异常处理,避免出现负数或空输出的情况,可在程序开始时添加输入校验逻辑。
完整代码实现
import java.util.Scanner;
public class InvertedTriangle {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.print("请输入倒三角形的行数:");
int rows = scanner.nextInt();
// 输入合法性检查
if (rows <= 0) {
System.out.println("错误:行数必须大于0!");
return;
}
for (int i = rows; i >= 1; i--) { // 外层循环控制行数递减
// 打印前置空格
for (int j = 1; j <= rows i; j++) {
System.out.print(" ");
}
// 打印星号部分
for (int k = 1; k <= 2 i 1; k++) {
System.out.print("");
}
System.out.println(); // 换行进入下一轮迭代
}
}
}
执行效果示例(输入rows=5)
变体拓展方案
| 特性 | 修改点 | 示例输出(rows=3) |
|---|---|---|
| 空心结构 | 仅在首尾位置打印符号,中间填充空格 | ️️️ ␣␣␣ |
| 多字符支持 | 允许用户自定义显示字符(如, 等) | @@@@@ @@@ |
| 文件导出功能 | 将控制台输出同时写入文本文件(需添加FileWriter相关代码) | triangle.txt保存相同内容 |
| 彩色控制台 | 使用ANSI转义码实现颜色渐变(依赖终端兼容性) | 色块分层显示 |
常见问题答疑FAQs
Q1: 如果想让第一行只有1个星号而不是最多的那个怎么办?
答:只需调整循环方向即可,将原本的for (int i = rows; i >= 1; i--)改为正序循环for (int i = 1; i <= rows; i++),同时相应修改空格和符号的计算公式,此时新的计算公式应为:空格数=i-1,符号数=rows2 (2i-1)。
Q2: 如何让程序支持不同字符而不仅是星号?
答:可以通过增加用户输入交互来实现,在获取行数后,追加一条提示语句读取目标字符,然后用该变量替代硬编码的。char ch = scanner.next().charAt(0);,并在内层打印循环中使用此
