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

Java嵌套for循环打印图案问题:修正中间末尾0值

解决打印H图案时的0值问题

我完全懂你现在的困扰——当size=9时,图案中间最后那个位置冒出来的0,确实把整体图案的美感破坏了。咱们先揪出问题根源:这个0来自(row + size) % col的运算,当row + size刚好是col的整数倍时(比如size=9、row=9、col=18时,9+9=18,18%18=0),取余结果就会变成0,但你实际需要显示的是col本身。

要在不改动其他所有数值的前提下修正这个问题,只需要给这个取余运算加个简单的判断:如果取余结果为0,就返回col,否则保持原来的取余结果。修改后的代码如下:

public static void printPatternH(int size) {
    for (int row = 1; row <= size; row++) {
        for (int col = 1; col <= 2*size; col++) {
            if (col > size + row - 1) {
                continue;
            }
            if (col <= size) {
                System.out.print((row + col >= size + 1 ? (row + col)%size : " ") + " ");
            } else {
                // 核心修改部分:处理取余为0的情况
                int calcValue = (row + size) % col;
                System.out.print((row + col >= size + 1 ? (calcValue == 0 ? col : calcValue) : " ") + " ");
            }
        }
        System.out.println();
    }
}

如果你喜欢更紧凑的写法,也可以把判断直接嵌入表达式里:

System.out.print((row + col >= size + 1 ? ((row + size) % col == 0 ? col : (row + size) % col) : " ") + " ");

这样修改后,只有取余结果为0的特殊位置会替换成col的值,其他所有位置的输出都和原来完全一致,完美解决你的问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 06:32:37