私のプログラムは、入力を英語からモールス符号に、またはその逆に変換することです。まず、モールス符号と英語のどちらで入力するかをユーザーに尋ねます。その後、一方を他方に変換します。私はモールス符号を英語に翻訳する方法に取り組んでいます。私はモールスの文字を含むこの配列を使用しています:
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」と表示されます。私の意図は、最初にモールス符号文字を含む配列内の各文字列の末尾から余分なスペースを削除し、次にユーザーの入力を各文字間のスペースで分割してパーツを一致させ、最後に対応する文字を表示することでした英語のアルファベットの配列。ユーザーが入力したモールス符号をプログラムで英語に翻訳するにはどうすればよいですか?