如何解决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
相关产品推荐
相关产品推荐

