Java入门问题:如何修改代码实现指定格式的n值打印效果?
问题分析与代码修改
你的代码存在几个核心问题,导致输出不符合预期:
- 内层循环的
if (j < n)条件始终成立,else分支完全无法执行,根本不会输出数字。 - 使用
System.out.println()每次添加*就换行,导致每个*单独占一行,破坏了整行的结构。 - 逻辑未区分每行的
*数量和后续数字的生成规则。
以下是修正后的代码:
public class Main08 { public static void main(String[] args) { int n = 5; // 外层循环控制行数,共4行(对应*数量1到4) for (int i = 1; i <= n - 1; i++) { StringBuilder row = new StringBuilder(); // 添加i个* row.append("*".repeat(i)); // 添加数字部分:从i+1到n的连续数字 for (int num = i + 1; num <= n; num++) { row.append(num); } // 输出整行 System.out.println(row); } } }
如果你的Java版本低于11,不支持String.repeat(),可以替换为循环拼接*:
// 替换row.append("*".repeat(i))为: for (int j = 0; j < i; j++) { row.append("*"); }
修改说明
- 外层循环:改为从
1到n-1(即4次循环),对应每行的*数量从1到4。 - 使用
StringBuilder构建整行内容,避免多次字符串拼接的性能损耗,也便于统一输出整行。 - 数字部分:从
i+1开始到n,正好匹配预期的数字序列(第一行2-5,第二行3-5等)。 - 整行构建完成后用
System.out.println()输出,保证每行是完整的内容。
内容的提问来源于stack exchange,提问作者Michał182
相关产品推荐
相关产品推荐

