📅  最后修改于: 2023-12-03 15:09:39.163000             🧑  作者: Mango
本文介绍如何用Java编写一个将英文文本转换为摩尔斯电码,以及将摩尔斯电码转换为英文文本的程序。
摩尔斯电码是用点、划表示字母、数字和标点符号的一种电报码。我们可以将每个英文字母、数字和标点符号都映射到一段摩尔斯电码,然后将这些电码拼接起来形成完整的电文。
以下是将英文文本转换为摩尔斯电码的Java代码:
public static String toMorseCode(String text) {
// 摩尔斯电码表
String[] morseCodes = {
".-", // A
"-...", // B
"-.-.", // C
"-..", // D
".", // E
"..-.", // F
"--.", // G
"....", // H
"..", // I
".---", // J
"-.-", // K
".-..", // L
"--", // M
"-.", // N
"---", // O
".--.", // P
"--.-", // Q
".-.", // R
"...", // S
"-", // T
"..-", // U
"...-", // V
".--", // W
"-..-", // X
"-.--", // Y
"--.." // Z
};
StringBuilder morseCode = new StringBuilder();
for (int i = 0; i < text.length(); i++) {
char c = Character.toUpperCase(text.charAt(i));
if (c >= 'A' && c <= 'Z') { // 字母
morseCode.append(morseCodes[c - 'A']).append(' ');
} else if (c >= '0' && c <= '9') { // 数字
morseCode.append(morseCodes[c - '0' + 26]).append(' ');
} else if (c == ' ') { // 空格
morseCode.append("/ ");
}
}
return morseCode.toString();
}
将摩尔斯电码转换为英文文本可以反向进行。我们可以先将整个电文按空格分割为一个一个的电码,然后将每个电码映射回英文字符。
以下是将摩尔斯电码转换为英文文本的Java代码:
public static String toText(String morseCode) {
// 摩尔斯电码表
String[] morseCodes = {
".-", // A
"-...", // B
"-.-.", // C
"-..", // D
".", // E
"..-.", // F
"--.", // G
"....", // H
"..", // I
".---", // J
"-.-", // K
".-..", // L
"--", // M
"-.", // N
"---", // O
".--.", // P
"--.-", // Q
".-.", // R
"...", // S
"-", // T
"..-", // U
"...-", // V
".--", // W
"-..-", // X
"-.--", // Y
"--.." // Z
};
StringBuilder text = new StringBuilder();
String[] codes = morseCode.split(" ");
for (int i = 0; i < codes.length; i++) {
String code = codes[i];
if (code.equals("/")) { // 空格
text.append(' ');
} else { // 字符或数字
for (int j = 0; j < morseCodes.length; j++) {
if (morseCodes[j].equals(code)) {
char c = (char) (j <= 25 ? j + 'A' : j - 26 + '0');
text.append(c);
break;
}
}
}
}
return text.toString();
}
我们可以在main方法中对程序进行测试:
public static void main(String[] args) {
String originalText = "HELLO WORLD";
String morseCode = toMorseCode(originalText);
System.out.println("将原文 '" + originalText + "' 转换为摩尔斯电码得到: " + morseCode);
String convertedText = toText(morseCode);
System.out.println("将摩尔斯电码 '" + morseCode + "' 转换为原文得到: " + convertedText);
}
程序运行结果如下:
将原文 'HELLO WORLD' 转换为摩尔斯电码得到: .... . .-.. .-.. --- / .-- --- .-. .-.. -..
将摩尔斯电码 '.... . .-.. .-.. --- / .-- --- .-. .-.. -.. ' 转换为原文得到: HELLO WORLD
本文介绍了如何用Java编写一个将英文文本转换为摩尔斯电码,以及将摩尔斯电码转换为英文文本的程序。通过这个例子我们可以学习到字符串处理、数组使用等基本的Java编程知识。