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

如何解决Java循环垂直输出问题?打印正方形图案求助

问题解决

你的问题根源有两个,对应两种修正方向,看你实际需求:


需求1:和你给出的期望输出一致(每个字符单独占一行,连续无空行)

你代码里的System.out.println("A")/System.out.println("B")会让每个字符单独换行,这本身符合你的期望,但外层循环末尾的System.out.println();会在每一组A和B之后多输出一个空行,直接把图案分割成了零散的块,导致看起来是垂直排列而非连续的正方形。

只要删掉外层循环最后的那行换行代码就行:

for (int i = 1; i <= 5; i++) {
    for (int j = 1; j <= i; j++) {
        System.out.println("A");
    }
    for (int k = 5; k >= i; k--) {
        System.out.println("B");
    }
    // 删掉这行多余的换行
}

运行后输出就和你给的期望结果完全匹配。


需求2:每行显示多个字符(形成5行的横向正方形)

如果你的目标是让每行的A和B在同一行显示(比如第一行ABBBBB,第二行AABBBB这种),那就要把所有println改成print(输出后不自动换行),只在每行的所有字符输出完后用println()换行:

for (int i = 1; i <= 5; i++) {
    for (int j = 1; j <= i; j++) {
        System.out.print("A"); // 换成print,不换行
    }
    for (int k = 5; k >= i; k--) {
        System.out.print("B"); // 同样换成print
    }
    System.out.println(); // 这行用来换行,结束当前行
}

如果要标准的5x5正方形(每行5个字符),把k的循环条件改成k > i即可:

for (int i = 1; i <= 5; i++) {
    for (int j = 1; j <= i; j++) {
        System.out.print("A");
    }
    for (int k = 5; k > i; k--) {
        System.out.print("B");
    }
    System.out.println();
}

输出结果:

ABBBB
AABBB
AAABB
AAAAB
AAAAA

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 05:01:26