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

Java实现数值逐行递减、每行奇数重复的数字金字塔问题排查

代码问题分析
  • 外层循环判断条件逻辑错误:将循环上限rows放在循环体内做自减操作,初始rows=5,循环跑3次后rows变成2,此时counter自增到4,4 <= 2不成立,循环直接终止,因此只能输出3行内容。
  • 前置空格打印逻辑错误:空格计数的上限用了动态变化的rows,导致每一行的前置空格数量不符合金字塔对齐要求。
  • 没有保留初始总行数的固定值:后续行数判断、数字计算、空格计算都需要用到固定的初始总行数,直接修改原始rows变量会导致所有关联逻辑全部偏移。
修改后的实现方案

单独定义固定的初始总行数变量,外层循环用固定总行数做判断,前置空格数按「初始总行数-当前行号」计算,当前打印数字按「初始总行数-当前行号+1」计算,修改后代码如下:

import java.util.Scanner;

public class LoopExercise2 {
    public static void main(String[] args) {
        Scanner scan = new Scanner(System.in);
        // 固定存储初始总行数,不要修改该值
        int totalRows = 5;
        
        // counter为当前行号,从1遍历到固定总行数
        for (int counter = 1; counter <= totalRows ; ++counter) {
            // 打印前置空格,数量为 总行数-当前行号
            for (int space = 1; space <= totalRows - counter ; ++space ) {
                System.out.print(" ");
            }
            
            // 打印当前行数字,次数为 2*当前行号-1,数字为 总行数-当前行号+1
            int currentNum = totalRows - counter + 1;
            int n_counter = 0;
            while (n_counter != 2 * counter - 1) {
                System.out.print(currentNum);
                ++n_counter;
            }
            // 换行
            System.out.println();
        }
    }
}

运行后输出和预期完全一致:

5
   444
  33333
 2222222
111111111

内容的提问来源于stack exchange,提问作者Luna

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 11:45:03