如何在字符串字符板上添加数字?附现有Java字符板显示代码
实现向字符板添加数字的解决方案
嘿,我来帮你搞定这个需求!你的代码核心是遍历字符串并提取字母,将它们格式化成带|分隔的行输出。要添加数字支持,只需要扩展字符的判断范围,把数字也纳入保留的范畴即可。
修改后的完整代码
public class CharacterBoard { public static void main(String[] args) { int a; // 可自行在字符串中加入数字测试,比如示例里的1、2、3、4 String s = "\nLLUA1\nUELB2\nPIEA3\nNMET4"; // 用StringBuilder优化拼接效率,避免频繁创建String对象 StringBuilder board = new StringBuilder(); for (int i = 0; i < s.length(); i++) { char currentChar = s.charAt(i); a = (int) currentChar; // 扩展判断条件:包含大小写字母 + 数字(ASCII 48-57对应'0'-'9') if ((a >= 97 && a <= 122) || (a >= 65 && a <= 90) || (a >= 48 && a <= 57)) { board.append(currentChar).append(" | "); } else if (board.length() > 0) { // 处理换行等非目标字符:如果当前board有内容,先输出再清空 System.out.println(board); board.setLength(0); // 清空StringBuilder } } // 处理最后一行剩余的内容 if (board.length() > 0) { System.out.println(board); } } }
关键改动说明
- 扩展字符判断条件:在原有的字母判断基础上,加入了
(a >= 48 && a <= 57)——这对应数字字符0到9的ASCII范围,这样数字就会和字母一样被添加到字符板中。 - 用StringBuilder优化拼接:原代码中
board = board + ...的方式会频繁创建新的String对象,对于较长的字符板效率很低。改用StringBuilder的append方法可以大幅提升性能。 - 简化分支逻辑:原代码里的多个else if分支被合并成一个——只要board有内容,遇到非目标字符就输出并清空,代码更简洁易读。
- 完善最后一行处理:补全了原代码未写完的末尾判断,确保遍历结束后剩余的字符板内容也能正常输出。
可选优化:去掉末尾多余分隔符
如果不想让每行末尾出现多余的|,可以在输出前添加一段处理逻辑:
if (board.length() > 0) { // 去掉末尾多余的" | "(长度为3的字符段) if (board.length() >= 3) { board.setLength(board.length() - 3); } System.out.println(board); }
优化后输出示例:
LLUA | 1 UELB | 2 PIEA | 3 NMET | 4
内容的提问来源于stack exchange,提问作者5-May
相关产品推荐
相关产品推荐

