如何在Java中实现字母图案的横向并排显示?
解决字母图案水平排列的问题
你的代码当前是先完整输出字母M的所有行,再输出字母A的所有行,导致两个字母垂直堆叠。要实现水平排列,需要在每一行中同时生成两个字母的图案内容,拼接后再打印。
以下是修改后的代码,通过封装每行图案生成逻辑的方式实现水平排列:
public class Main { public static void main(String[] args) { // 字母的总行数 int totalRows = 10; // 逐行生成并拼接M和A的图案 for (int row = 1; row <= totalRows; row++) { String mRow = getMRow(row); String aRow = getARow(row); // 拼接并打印当前行的完整内容 System.out.println(mRow + aRow); } } // 生成字母M的第row行内容 private static String getMRow(int row) { StringBuilder sb = new StringBuilder(); int fp = row; int sp = 12 - row; // 对应原逻辑中sp逐行递减的规则 for (int col = 1; col <= 11; col++) { if (col == 1 || col == 11 || (col == fp || col == sp) && row <= 10 / 2 + 1) { sb.append("*"); } else { sb.append(" "); } } return sb.toString(); } // 生成字母A的第row行内容 private static String getARow(int row) { StringBuilder sb = new StringBuilder(); int afp = 10 - row; // 对应原逻辑中afp逐行递减的规则 int asp = 10 + row; // 对应原逻辑中asp逐行递增的规则 for (int col = 1; col <= 20; col++) { if (col == afp || col == asp || (row == 5 && col > afp && col < asp && col % 2 == 0)) { sb.append("*"); } else { sb.append(" "); } } return sb.toString(); } }
关键修改说明
- 把每个字母的行生成逻辑拆分为独立方法,代码结构更清晰,后续添加其他字母也更方便
- 主循环逐行执行,同时获取M和A的当前行字符串,拼接后一次性打印,确保两个字母在同一水平行
- 调整了行内变量的计算逻辑,完全匹配你原代码的图案生成规则,保证字母样式不变
内容的提问来源于stack exchange,提问作者Kuldeep Ghorpade
相关产品推荐
相关产品推荐

