我的程序是將輸入從英文翻譯成莫爾斯碼,反之亦然。首先,它會提示用戶是否要輸入莫爾斯電碼或英文。之後,它將一個轉換爲另一個。我首先處理英文到摩爾斯電碼的翻譯。我使用含莫爾斯電碼字母此陣:用for循環翻譯輸入
String[] codes = {".- ", "-... ", "-.-. ", "-.. ", ". ", "..-. ", "--. ", ".... ", ".. ", ".--- ", "-.- ", ".-.. ", "-- ", "-. ", "--- ", ".--. ", "--.- ", ".-. ", "... ", "- ", "..- ", "...- ", ".-- ", "-..- ", "-.-- ", "--.. ", ".---- ", "..--- ", "...-- ", "....- ", "..... ", "-.... ", "--... ", "---.. ", "----. ", "----- "};
翻譯,以摩爾斯電碼必須以一定的方式呈現。當然,英文字母中的每個字母都必須用莫爾斯電碼中的相應字符表示。每個角色必須用空格分開。但是,每個單詞必須用直線(|)分隔。標點和大寫是沒有必要的。這裏是一個例子來澄清:
輸入:這是一個測試。
輸出: - .... .. ... | .. ... | .- | - 。 ... -
我的代碼如下:
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', ' '};
if (decision.equalsIgnoreCase(morse))
{
//Translate to English here
}
else if (decision.equalsIgnoreCase(english))
{
String input = getString ("Enter a phrase to be translated to Morse Code:");
input = input.toUpperCase();
for (int n = 0; n < input.length(); n++)
{
char ch = input.charAt(n);
for (int i = 0; i < 26; i++)
{
if (ch == letters[i])
{
String newch = Character.toString(ch);
System.out.print(codes[i]);
}
}
}
}
else
{
System.out.println("Invalid Input - Type 'English' or 'Morse'");
}
}
public static String getString(String paramString)
{
String str = JOptionPane.showInputDialog(paramString);
return str;
}
}
我的問題是,摩爾斯電碼翻譯似乎沒有 「|」每個詞之間的分隔符。我嘗試在包含英文字母的數組末尾放置一個空格字符,並在包含摩爾斯碼字符的數組末尾添加一個「|」字符串,認爲for循環會像其他任何其他字符一樣拾取它字符,但翻譯顯示在單詞之間有空格。我能做些什麼來解決這個問題?
+1的建議,而不是地圖。 –
使用HashMap轉換其他方向很困難,或者重複數據是必需的。但你說得對,這兩個列表並不理想。我現在有建議。 – Daniel
你可以使用兩個'HashMap'或者有一個自定義的'Codify'對象類(它可以基本上是'Pair'類似的東西)並且遍歷它(而不是有兩個不能用於封裝的非耦合數組) –
Jack