
本文讲解如何通过修正内层循环的边界条件,实现为 1 到输入数字之间的每个整数输出该数字本身后紧跟相应数量的 '#' 字符(如 3 → "3###"),并提供可运行的 java 示例与关键注意事项。
本文讲解如何通过修正内层循环的边界条件,实现为 1 到输入数字之间的每个整数输出该数字本身后紧跟相应数量的 '#' 字符(如 3 → "3###"),并提供可运行的 java 示例与关键注意事项。
要实现“对每个数字 i(从 1 到 inputNum),先输出 i,再输出 i 个 #”,核心在于:内层循环的迭代次数必须动态匹配当前外层循环变量 i 的值,而非固定为 inputNum。
原代码的问题在于内层循环写成了:
for (j = inputNum; j >= 1; --j) { ... }这导致无论 i 是 1 还是 5,每次都会打印 inputNum 个 #,因此所有行都显示相同数量的 #(如输入 5 时每行都是 5 个 #)。
✅ 正确做法是让内层循环以 i 为上限(或下限),例如:
import java.util.Scanner;
public class LoopPatterns {
public static void main(String[] args) {
Scanner scnr = new Scanner(System.in);
int inputNum = scnr.nextInt();
for (int i = 1; i <= inputNum; i++) {
System.out.print(i); // 输出数字
for (int j = 1; j <= i; j++) { // 关键:j 从 1 循环到 i(共 i 次)
System.out.print("#");
}
System.out.println(); // 换行
}
scnr.close();
}
}? 提示:内层循环也可写作
for (int j = i; j >= 1; j--)(如答案所示),逻辑等价,但j 的升序写法更符合常规习惯,也更易理解。
注意事项:
- 避免在循环中重复创建
Scanner或忽略资源关闭(本例中建议调用scnr.close()); - 外层循环变量
i是控制“行数”和“# 数量”的双重关键,务必确保内层循环范围与其严格一致; - 若需调整格式(如数字与
#之间加空格),应在System.out.print(i)后添加System.out.print(" "),但题目示例无空格,故不添加。
运行效果(输入 5):
1# 2## 3### 4#### 5#####
掌握这种“外层定次数、内层定重复内容”的嵌套逻辑,是构建图形化输出(如三角形、金字塔等)的基础能力。

















