我的程序是将输入从英语翻译成摩尔斯电码,反之亦然。首先,它会提示用户输入莫尔斯电码还是英语。之后,它将一个翻译成另一个。我正在研究如何将摩尔斯电码翻译成英语。我正在使用这个包含摩尔斯字母的数组:
String[] codes = {".- ", "-... ", "-.-. ", "-.. ", ". ", "..-. ", "--. ", ".... ", ".. ", ".--- ", "-.- ", ".-.. ", "-- ", "-. ", "--- ", ".--. ", "--.- ", ".-. ", "... ", "- ", "..- ", "...- ", ".-- ", "-..- ", "-.-- ", "--.. ", ".---- ", "..--- ", "...-- ", "....- ", "..... ", "-.... ", "--... ", "---.. ", "----. ", "----- ", "| "};
用户的输入必须以特定方式格式化。输入摩尔斯电码时,每组代表一个字母的字符必须用空格隔开。每个完整的单词必须用直线(“|”)分隔。标点和大写不是必需的。
这是一个澄清的例子:
输入:
- .... .. ... | .. ... | .- | - . ... -
输出:
THIS IS A TEST
我的代码如下:
import javax.swing.JOptionPane;
public class ProjectOne
{
public static void main (String[] args)
{
String decision = getString ("Will you be typing in English or Morse Code?");
String english = "english";
String morse = "morse";
String[] codes = {".- ", "-... ", "-.-. ", "-.. ", ". ", "..-. ", "--. ", ".... ", ".. ", ".--- ", "-.- ", ".-.. ", "-- ", "-. ", "--- ", ".--. ", "--.- ", ".-. ", "... ", "- ", "..- ", "...- ", ".-- ", "-..- ", "-.-- ", "--.. ", ".---- ", "..--- ", "...-- ", "....- ", "..... ", "-.... ", "--... ", "---.. ", "----. ", "----- ", "| "};
char[] letters = {'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', '1', '2', '3', '4', '5', '6', '7', '8', '9', '0', ' '};
if (decision.equalsIgnoreCase(morse))
{
for (int a = 0; a < codes.length; a++)
{
codes[a] = codes[a].trim();
}
String input = getString ("Enter a phrase to be translated to English:");
String[] parts = input.split(" ");
for (int n = 0; n < parts.length; n++)
{
for (int i = 0; i < parts.length; ++i)
{
if (parts[n].equals(codes[i]))
{
System.out.print(letters[i]);
}
}
}
}
else if (decision.equalsIgnoreCase(english))
{
//Translates English to Morse Code
}
else
{
System.out.println("Invalid Input - Type 'English' or 'Morse'");
}
}
public static String getString(String paramString)
{
String str = JOptionPane.showInputDialog(paramString);
return str;
}
}
我的问题是翻译成英文根本不正确。在尝试我上面提供的示例时,输出显示为“HIIAE”。我的意图是首先修剪包含摩尔斯电码字符的数组中每个字符串末尾的额外空格,然后将用户的输入按每个字母之间的空格拆分并匹配部分,然后最后显示相应的字符带有英文字母的数组。我该怎么做才能让我的程序将用户在摩尔斯电码中的输入翻译成英语?