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

Java中是否有其他方法打印指定图案?现有代码输出不符

问题分析与解决方案

原代码存在的问题

你的代码逻辑有明显缺陷:

  • 循环中当i%2==0时执行了break,导致循环仅运行2次就终止,根本无法生成多行图案
  • 没有处理每行独立输出的逻辑,只是单纯拼接字符,没有添加换行符
  • 字符拼接规则完全不符合预期图案的行结构

正确实现方式

方式1:直接逐行输出(简单直观)

如果你的目标是固定输出4行的预期图案,直接按行打印最直接:

public void printPattern() {
    System.out.println(" |");
    System.out.println(" |/");
    System.out.println("\\|");
    System.out.println(" |/");
}

方式2:通过循环动态生成(适配可变行数场景)

如果需要根据Height参数动态生成对应行数的图案(假设预期图案是循环的行序列: | → |/ → \| → |/...),可以预先定义行模板数组,再循环输出:

public String generatePattern(int height) {
    StringBuilder sb = new StringBuilder();
    // 定义预期的行模板序列
    String[] lines = {" |", " |/", "\\|", " |/"};
    for (int i = 0; i < height; i++) {
        sb.append(lines[i % lines.length]);
        sb.append(System.lineSeparator()); // 添加换行符
    }
    return sb.toString();
}

// 调用示例:
public static void main(String[] args) {
    System.out.println(new YourClassName().generatePattern(4));
}

方式3:逐行判断生成(适合复杂行规则)

如果行规则需要动态判断,也可以在循环中逐行处理:

public String generatePattern(int height) {
    StringBuilder sb = new StringBuilder();
    for (int i = 1; i <= height; i++) {
        switch(i) {
            case 1:
                sb.append(" |");
                break;
            case 2:
                sb.append(" |/");
                break;
            case 3:
                sb.append("\\|");
                break;
            case 4:
                sb.append(" |/");
                break;
            // 如需更多行,可继续添加case或复用前面的规则
            default:
                sb.append(lines[(i-1) % lines.length]);
        }
        sb.append(System.lineSeparator());
    }
    return sb.toString();
}

验证输出

执行上述代码后,会得到你预期的图案:

|
|/
|
|/

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.23 23:27:03