Java嵌套循环问题修复:实现数字对应数量#的输出格式
问题根源与解决方法
你代码的问题出在内层循环的条件上:当前内层循环始终以inputNum为基准打印#,所以不管外层循环的当前数字i是多少,每行都会输出inputNum个#。要让#的数量匹配当前数字i,只需要把内层循环的范围和i绑定即可。
修改方案一:递增式内层循环
将内层循环的起始值设为1,终止条件改为j <= i,这样每次会打印i个#:
import java.util.Scanner; public class LoopPatterns { public static void main (String[] args) { Scanner scnr = new Scanner(System.in); int inputNum; int i; int j; inputNum = scnr.nextInt(); for (i = 1; i <= inputNum; ++i){ System.out.print(i); // 内层循环范围改为1到i,打印i个# for (j = 1; j <= i; ++j){ System.out.print("#"); } System.out.println(); } } }
修改方案二:递减式内层循环
如果习惯用递减逻辑,也可以把内层循环的起始值设为i,终止条件改为j >= 1,同样能打印i个#:
import java.util.Scanner; public class LoopPatterns { public static void main (String[] args) { Scanner scnr = new Scanner(System.in); int inputNum; int i; int j; inputNum = scnr.nextInt(); for (i = 1; i <= inputNum; ++i){ System.out.print(i); // 内层循环从i递减到1,打印i个# for (j = i; j >= 1; --j){ System.out.print("#"); } System.out.println(); } } }
可选简化方案(Java 11+)
利用Java 11新增的String.repeat()方法,可以直接生成指定数量的#,避免嵌套循环:
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.println(i + "#".repeat(i)); } } }
修改后输入5,会得到预期输出:
1#
2##
3###
4####
5#####
内容的提问来源于stack exchange,提问作者El36
相关产品推荐
相关产品推荐

