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

如何实现文本星号包裹方法?改进Java星号框打印代码

改进后的Java星号框实现代码

针对需求,我们修复并扩展原有代码,实现两种星号框包裹「Hello, World!」的效果,以下是完整代码:

public class StarWriter {
    // 打印n个星号并换行
    void printStars(int n) {
        for (int i = 0; i < n; i++) {
            System.out.print("*");
        }
        System.out.println();
    }

    // 打印样式1:简单星号框
    void writeBoxStyle1() {
        String text = "Hello, World!";
        // 总宽度:左右各2个* + 左右各1个空格 + 文本长度
        int totalWidth = 2 + 2 + text.length();
        // 顶部星号线
        printStars(totalWidth);
        // 打印中间文本行
        System.out.printf("** %s **%n", text);
        // 底部星号线
        printStars(totalWidth);
    }

    // 打印样式2:嵌套星号框
    void writeBoxStyle2() {
        String text = "Hello, World!";
        // 总宽度匹配示例样式的21个星号
        int totalWidth = 21;
        // 顶部星号线
        printStars(totalWidth);
        // 外层上方嵌套行
        System.out.println("***             ***");
        System.out.println("**               **");
        // 中间文本行
        System.out.printf("*  %s  *%n", text);
        // 外层下方嵌套行
        System.out.println("**               **");
        System.out.println("***             ***");
        // 底部星号线
        printStars(totalWidth);
    }

    public static void main(String[] args) {
        StarWriter writer = new StarWriter();
        System.out.println("样式1:");
        writer.writeBoxStyle1();
        System.out.println("\n样式2:");
        writer.writeBoxStyle2();
    }
}

代码改进说明

  • 修复printStars方法:移除硬编码的14个星号,改为根据传入参数n打印对应数量的星号,完成后自动换行。
  • 实现样式1:
    • 通过计算文本长度确定星号线总宽度,确保星号线与中间文本行宽度一致。
    • 使用printf格式化中间行,保证「Hello, World!」前后的空格和星号排版规范。
  • 实现样式2:
    • 匹配示例的21个星号总宽度,依次打印外层星号线、上下嵌套的星号行,最后输出带星号包裹的文本行。
  • 主方法中分别调用两个样式方法,清晰展示两种效果。

内容的提问来源于stack exchange,提问作者quiznakinghumans

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.15 13:05:25