如何用'*'输出三角形?代码运行报错求排查修正
*输出三角形及代码错误排查 嘿,我来帮你搞定这个问题!用*输出三角形是编程入门里超经典的练习,我先给你几个常用的实现示例,再聊聊新手常踩的坑和修正方法,你对照自己的代码应该就能找到问题啦~
一、常见三角形的实现代码(以Java为例)
1. 左对齐正三角形
public class LeftTriangle { public static void main(String[] args) { int rows = 5; // 你可以修改这个数值调整三角形行数 // 外层循环控制行数 for (int i = 1; i <= rows; i++) { // 内层循环打印每行的*,数量等于当前行数 for (int j = 1; j <= i; j++) { System.out.print("*"); // 注意用print而不是println,不然会换行 } System.out.println(); // 每行结束后换行 } } }
运行后输出:
* ** *** **** *****
2. 等腰三角形(居中对齐)
public class IsoscelesTriangle { public static void main(String[] args) { int rows = 5; for (int i = 1; i <= rows; i++) { // 先打印每行前面的空格,数量是总行数减去当前行数 for (int j = rows; j > i; j--) { System.out.print(" "); } // 再打印*,每行的*数量是2*当前行数-1(保证是奇数) for (int k = 1; k <= 2 * i - 1; k++) { System.out.print("*"); } System.out.println(); } } }
运行后输出:
* *** ***** ******* *********
二、新手常犯的错误及修正方法
错误1:循环边界写错
比如想打印5行,结果外层循环写成i < rows(也就是i < 5),这样只会打印4行;或者打印的循环次数算错,比如把等腰三角形的2*i-1写成2*i,导致每行多一个,形状直接歪掉。
✅ 修正:仔细核对循环的起始和终止条件,比如行数从1到rows,就用i <= rows;等腰三角形每行的*是奇数,公式固定是2*i-1。错误2:混用
print和println
很多新手会不小心在打印的时候用System.out.println("*"),结果每个都单独换行,最后变成一列竖线而不是三角形。
✅ 修正:打印同一行的时用System.out.print("*"),等整行的都打印完,再用System.out.println()换行。错误3:空格和*的循环顺序搞反
打印等腰三角形时,必须先打空格再打*,如果搞反了,就会变成右对齐的三角形,甚至完全不是你想要的形状。
✅ 修正:先执行打印空格的内层循环,再执行打印*的内层循环。错误4:循环变量初始化错误
比如打印等腰三角形的空格时,把j = rows写成j = 1,导致空格数量完全不对,三角形直接变形。
✅ 修正:确认内层循环的起始值,比如打印空格的循环要从总行数开始递减,所以初始值设为rows,循环条件是j > i。
如果能把你写的代码贴出来,我还能更精准地帮你定位问题哦!不过对照上面的示例和错误点,应该能解决大部分情况啦~
内容的提问来源于stack exchange,提问作者JavaNewbie

