JavaScript实现Y形图案问题:底部元素未居中(仅支持奇数尺寸)
Y形图案代码底部未居中的问题排查与修复
你编写的Y形图案代码中,底部部分未居中的问题出在底部列的判断条件错误,同时中间列的判断逻辑也存在问题:
原代码问题分析
- 对于底部行(
i >= size / 2),你错误地使用了j === 0作为判断条件,这会让底部的O显示在最左侧,而非居中位置。 - 中间列的判断
j === size / 2不成立:因为size是奇数,size/2是小数(比如size=5时是2.5),而j是整数索引,这个条件永远不会触发,导致原本应该居中的底部行没有正确显示。
修复后的代码
const char = "Y"; const size = 5; // 仅支持奇数 let output = ""; if (char === 'Y') { const mid = Math.floor(size / 2); // 计算中间列索引,size为奇数时是整数 for (let i = 0; i < size; i++) { for (let j = 0; j < size; j++) { // 修正条件:顶部的两条斜线 + 中间列的所有行 if ( (i === j && i < mid) || (i + j === size - 1 && i < mid) || (j === mid) ) { output += 'O'; } else { output += ' '; } } output += '\n'; } } console.log(output);
修复说明
- 新增
mid变量,通过Math.floor(size/2)计算出中间列的整数索引(比如size=5时,mid=2),避免小数判断的问题。 - 底部行的判断直接合并到
j === mid的条件中,因为Y形的底部就是中间列的延续,无需单独区分顶部和底部。 - 简化了条件逻辑,让代码更易读。
输出结果
O O O O O O O
内容的提问来源于stack exchange,提问作者for school
相关产品推荐
相关产品推荐

