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

如何在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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 08:45:32