Java摩尔斯码转英文程序无报错但无输出,求string.split()用法指导
摩尔斯码转英文无输出问题解析&
String.split()用法详解 嗨,咱们一步步来拆解你的问题:
一、程序无输出的常见原因
你说程序没报错但没内容输出,大概率是这几个原因:
- 输入格式不匹配:摩尔斯码是有规范分隔的(通常字符间用空格,单词间用
/或双空格),如果你的程序没处理这些分隔,直接把整段摩尔斯码拿去匹配字母映射表,肯定找不到对应的键,结果就是空字符串,自然没输出。 - 映射逻辑有问题:比如你的摩尔斯码-字母映射表写错了(比如把"A"对应的
.-写成了.-多了空格),或者匹配时没处理空格/大小写,导致找不到对应字符,拼接出空结果。 - 输出环节没走对:比如输出的变量本身是空的,或者代码分支没走到输出语句(不过你说没报错,这个概率相对小)。
二、String.split()在这里的作用
摩尔斯码不是连续的字符串,它是由分隔符区分开的独立符号,split()就是帮你把整段的摩尔斯码拆成一个个可单独处理的单元:
- 比如输入是
".- / -... -.-."(对应A BC),用split(" / ")可以先把它拆成[".-", "-... -.-."]两个单词块; - 再对每个单词块用
split(" "),就能拆成单个的摩尔斯字符:[".-"]和["-...", "-.-."]; - 这样你就能拿着每个单独的摩尔斯符号,去映射表里找对应的英文字母了。
三、实际代码示例
给你写个极简的可运行示例,你可以对照着调整自己的代码:
import java.util.HashMap; import java.util.Map; public class MorseToEnglishConverter { public static void main(String[] args) { // 先建立摩尔斯码到英文字母的映射表(这里只写了几个,你可以补全所有字母/数字) Map<String, String> morseToEnglish = new HashMap<>(); morseToEnglish.put(".-", "A"); morseToEnglish.put("-...", "B"); morseToEnglish.put("-.-.", "C"); morseToEnglish.put("-..", "D"); // 示例输入:注意字符用空格分隔,单词用" / "分隔 String inputMorse = ".- / -... -.-. / -.."; // 第一步:拆分单词 String[] morseWords = inputMorse.split(" / "); StringBuilder result = new StringBuilder(); // 遍历每个单词 for (String word : morseWords) { // 第二步:拆分单词里的每个摩尔斯字符 String[] morseChars = word.split(" "); for (String morseChar : morseChars) { // 从映射表取对应字母,找不到就留空(也可以加个占位符比如"?") result.append(morseToEnglish.getOrDefault(morseChar, "")); } // 单词之间加空格分隔 result.append(" "); } // 输出结果,记得去掉最后多余的空格 System.out.println("转换结果:" + result.toString().trim()); } }
四、排查小技巧
- 先打印拆分后的数组,比如
System.out.println(Arrays.toString(morseWords));,看看是不是正确拆分了单词; - 检查映射表的键和输入的摩尔斯码是否完全一致(比如有没有多余空格);
- 如果输入的单词分隔是双空格,那
split()的参数就要改成split(" "),要和输入格式对应上。
内容的提问来源于stack exchange,提问作者newatjava16
相关产品推荐
相关产品推荐

