You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.16 16:23:06