如何用Java实现自适应尺寸的姓名首字母图案打印程序?
动态生成首字母图案的Java实现方案
核心思路
针对每个首字母定义基于尺寸参数的动态填充规则,用二维数组存储每个位置的字符,最后将两个字母的数组横向拼接输出,确保不同尺寸下字母辨识度一致。以下以首字母JP为例实现完整逻辑。
完整实现代码
public class Array2Iniciales { public static void inicialesletras(int size, char fillChar) { // 确保尺寸至少为3,避免图案变形 if (size < 3) { size = 3; } // 初始化两个二维数组,默认填充空格 char[][] letraJ = new char[size][size]; char[][] letraP = new char[size][size]; initializeArray(letraJ); initializeArray(letraP); // 填充字母J的图案 fillLetraJ(letraJ, size, fillChar); // 填充字母P的图案 fillLetraP(letraP, size, fillChar); // 拼接并打印两个字母 printInitials(letraJ, letraP, size); } // 初始化数组为空格 private static void initializeArray(char[][] array) { for (int i = 0; i < array.length; i++) { for (int j = 0; j < array[i].length; j++) { array[i][j] = ' '; } } } // 填充字母J的规则 private static void fillLetraJ(char[][] jArray, int size, char fillChar) { // 第一行全填充 for (int col = 0; col < size; col++) { jArray[0][col] = fillChar; } // 最后一行:从第2列到倒数第2列填充(索引1到size-2) for (int col = 1; col < size - 1; col++) { jArray[size - 1][col] = fillChar; } // 中间列(倒数第2列):从第2行到倒数第2行填充 int middleCol = size - 2; for (int row = 1; row < size - 1; row++) { jArray[row][middleCol] = fillChar; } } // 填充字母P的规则 private static void fillLetraP(char[][] pArray, int size, char fillChar) { // 左列全填充 for (int row = 0; row < size; row++) { pArray[row][0] = fillChar; } // 第一行全填充 for (int col = 0; col < size; col++) { pArray[0][col] = fillChar; } // 中间行的右列:从第2行到倒数第2行填充 for (int row = 1; row < size - 1; row++) { pArray[row][size - 1] = fillChar; } } // 拼接打印两个首字母 private static void printInitials(char[][] j, char[][] p, int size) { for (int row = 0; row < size; row++) { // 打印J的当前行 for (char c : j[row]) { System.out.print(c); } // 加一个空格分隔两个字母 System.out.print(" "); // 打印P的当前行 for (char c : p[row]) { System.out.print(c); } System.out.println(); } } // 测试示例 public static void main(String[] args) { // 测试尺寸为5,填充字符* inicialesletras(5, '*'); System.out.println("\n---"); // 测试尺寸为7,填充字符# inicialesletras(7, '#'); } }
关键逻辑说明
- 数组初始化:先将所有位置设为空格,确保未填充区域显示空白,避免乱码。
- 字母填充规则:
- J:第一行全满,底部中间段填充,右侧竖线从顶部下方延伸到底部上方,贴合J的轮廓。
- P:左侧竖线全满,顶部横线全满,右侧竖线从顶部下方延伸到倒数第二行,贴合P的轮廓。
- 尺寸兼容性:通过动态计算索引(如
size-1、size-2),确保任意≥3的尺寸下,字母比例和辨识度一致。 - 拼接打印:逐行拼接两个字母的数组,每行之间加空格分隔,保证排版整齐。
测试输出示例
尺寸为5时的输出:
***** ***** * * * * * * ****
尺寸为7时的输出:
####### ####### # # # # # # # # # ######
内容的提问来源于stack exchange,提问作者Johann Pasquel
相关产品推荐
相关产品推荐

