
本文详解如何通过修正内层循环的边界条件,使每个数字后跟随与其值相等数量的“#”符号,解决常见嵌套循环逻辑错位问题。
本文详解如何通过修正内层循环的边界条件,使每个数字后跟随与其值相等数量的“#”符号,解决常见嵌套循环逻辑错位问题。
要实现“输入数字 n,输出 1#、2##、…、n(n个#)”的格式,关键在于:**内层循环的迭代次数必须动态匹配当前外层循环变量的值**,而非固定为 `inputNum`。
原代码中内层循环写作 for (j = inputNum; j >= 1; --j),导致每行都打印 inputNum 个 #,因此所有行末尾的 # 数量相同(如输入5时每行都是5个#)。这违背了题目要求——第 i 行应恰好输出 i 个 #。
✅ 正确做法是将内层循环上限设为当前外层变量 i,并从 i 递减至 1(或从 1 递增至 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 <blockquote><p>? 提示:内层循环也可写成 <code>for (int j = i; j >= 1; j--)</code>,效果一致;但采用升序(<code>j = 1; j )更符合直觉,也便于后续扩展(如加入索引相关逻辑)。</code></p><div class="aritcle_card flexRow artxards">
<div class="artcardd flexRow">
<a class="aritcle_card_img" rel="nofollow" href="/xiazai/skill7672" title="java-enterprise"><img
src="https://img.php.cn/upload/skill/000/000/081/179161929545163.jpg" alt="java-enterprise" onerror="this.onerror='';this.src='/static/lhimages/moren/morentu.png'" ></a>
<div class="aritcle_card_info flexColumn">
<a rel="nofollow" href="/xiazai/skill7672" title="java-enterprise" class="overflowclass">java-enterprise</a>
<p class="overflowclass">Java企业开发专家,专注于Spring Boot、微服务架构和JVM优化。适用于:Java语言掌握、</p>
</div>
<a rel="nofollow" href="/xiazai/skill7672" title="java-enterprise" class="aritcle_card_btn flexRow flexcenter"><b></b><span>下载</span>
</a>
</div>
</div></blockquote><p>⚠️ 注意事项: </p>
- 避免在循环中重复创建
Scanner或忽略资源关闭(本例中建议调用scnr.close()); - 变量作用域推荐使用
for (int i = ...)形式,避免污染外层作用域; - 若需处理边界情况(如
inputNum ≤ 0),应增加输入校验,例如:if (inputNum
该模式是嵌套循环的经典应用场景——外层控制“行”与“基数”,内层控制“列”与“重复次数”。掌握这一思维,可快速迁移至星号三角形、乘法表、字符矩阵等同类问题。
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南










