Java循环生成特定字符图案问题求助(附代码)
Java 图案生成器修正方案(基于SIZE常量)
需求回顾
需根据SIZE常量生成由点(.)、斜杠(/、)和引号('、")组成的图案,核心规则:
- 图案每一行前后需有对应数量的点组(向上取整到最近3的倍数)
- 引号部分由
/开头、\结尾包裹 - 双引号数量为
SIZE,单引号数量为SIZE+1 - 约束:仅允许使用
print/println、静态方法、循环、局部变量、类常量;禁止方法参数、有返回值方法、条件语句
修正后的完整代码
public class PatternGenerator { public static final int SIZE = 4; public static void main(String[] args) { printPattern(); } public static void printPattern() { printTop(); printMiddle(); } // 打印第一行图案 public static void printTop() { // 计算前缀/后缀点的数量:向上取整到最近3的倍数 int dotCount = 3 * ((SIZE + 2) / 3); // 打印前缀点 for (int i = 0; i < dotCount; i++) { System.out.print("."); } // 打印斜杠开头与引号部分 System.out.print("/"); // 生成SIZE个双引号和SIZE个单引号 for (int i = 0; i < SIZE; i++) { System.out.print("\"'"); } // 补充第SIZE+1个单引号 System.out.print("'"); // 打印斜杠结尾与后缀点 System.out.print("\\"); for (int i = 0; i < dotCount; i++) { System.out.print("."); } System.out.println(); } // 打印第二行图案(结构与第一行一致,可按需调整) public static void printMiddle() { int dotCount = 3 * ((SIZE + 2) / 3); for (int i = 0; i < dotCount; i++) { System.out.print("."); } System.out.print("/"); for (int i = 0; i < SIZE; i++) { System.out.print("\"'"); } System.out.print("'"); System.out.print("\\"); for (int i = 0; i < dotCount; i++) { System.out.print("."); } System.out.println(); } }
核心修正说明
- 点数量计算优化:使用
3 * ((SIZE + 2) / 3)实现向上取整到3的倍数,避免原代码中SIZE为3的倍数时多生成3个点的问题。 - 引号部分精准生成:通过两次无分支循环完成需求:
- 循环
SIZE次打印" ',确保生成SIZE个双引号和SIZE个单引号 - 额外打印1个单引号,满足
SIZE+1个单引号的要求
- 循环
- 冗余代码移除:删除原代码中无意义的行循环(如
for (int line = SIZE; line <= SIZE; line++)),简化执行逻辑。 - 结构模块化:将前缀点、核心图案、后缀点拆分,逻辑更清晰,便于维护。
内容的提问来源于stack exchange,提问作者user19980968
相关产品推荐
相关产品推荐

