java莫尔斯编码器空白删除
在你的帮助下,我用我的莫尔斯电码翻译程序做了很好的翻译,但是如果文本中有未知字符,则空格仍然存在问题
这是我在使用哈希映射时将单个字符转换为莫尔斯码的方法(这没问题!)
public String getMorseCode(char c) {
char cUpper = Character.toUpperCase(c);
if (charMap.containsKey(cUpper)) {
return charMap.get(cUpper);
} else {
final String emptyString = "";
return emptyString;
}
}
使用这种方法,我使用编码方法将文本翻译成摩尔斯电码:
public String encode(String text) {
StringBuilder sb1 = new StringBuilder();
int i = 0;
while (i < text.length()) {
char c = text.charAt(i);
if (c == ' ') {
sb1.append("/");
i++;
} else {
i = i + 1;
sb1.append(getMorseCode(c));
}
sb1.append("*");
}
return sb1.toString().trim();
}
通过删除句子前后的空格。修剪()。在莫尔斯电码中,单词之间有3个空格,字符之间有1个空格。如果文本中有未知字符,则应该有一个空字符串(“”),后面没有空格。我将方法中的空格改为/和*以查看情况如何变化,但还是遇到了同样的问题
我只是不知道如何更改我的代码来实现这一点! 提前感谢您的帮助
# 1 楼答案
您需要检查是否返回了空字符串。只有当它不是空的时候,你才能添加空格
顺便说一句,这里的
for
循环可能比while
更合适,因为您正在按顺序处理所有字符