求助:如何用嵌套for循环实现X与Y组成的指定图案打印?
生成指定X/Y组成的图案
需求说明
根据输入的数字,打印由X和Y组成的指定图案,输入输出示例如下:
输入
3 7 4
预期输出
XXXY XXYY XYYY XXXXXXXY XXXXXXYY XXXXXYYY XXXXYYYY XXXYYYYY XXYYYYYY XYYYYYYY XXXXY XXXYY XXYYY XYYYY
问题代码
我尝试使用嵌套for循环实现,但输出不符合预期,代码如下:
String ret = ""; for (int row = 0; row < size; row++) //size is the input { for (int col = 0; col < size; col++) { ret += "X"; } for (int col = 0; col < size; col++) { ret += "Y"; } ret += "\n"; } return ret;
实际输出
XXXYYY XXXYYY XXXYYY XXXXXXXYYYYYYY XXXXXXXYYYYYYY XXXXXXXYYYYYYY XXXXXXXYYYYYYY XXXXXXXYYYYYYY XXXXXXXYYYYYYY XXXXXXXYYYYYYY XXXXYYYY XXXXYYYY XXXXYYYY XXXXYYYY
错误分析
原代码每行固定输出size个X加size个Y,完全没贴合预期图案的规律。观察预期输出的规律:
- 总共有
size行 - 第
row行(从0开始计数):- X的数量是
size - row - Y的数量是
row + 1 - 每行总长度为
size + 1,和示例中的字符数一致(比如输入3时每行4个字符,3+1=4)
- X的数量是
修正后的代码
String ret = ""; for (int row = 0; row < size; row++) { // 添加对应数量的X for (int col = 0; col < size - row; col++) { ret += "X"; } // 添加对应数量的Y for (int col = 0; col < row + 1; col++) { ret += "Y"; } ret += "\n"; } return ret;
验证结果
以输入3为例:
- row=0:3个X + 1个Y → XXXY
- row=1:2个X + 2个Y → XXYY
- row=2:1个X + 3个Y → XYYY
完全匹配预期输出。
内容的提问来源于stack exchange,提问作者realBunger
相关产品推荐
相关产品推荐

